[Bug] Claude provider reported as "authenticated" when not logged in (hides the Sign in flow)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 88/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- authentication, backend
Research direction
Start in apps/server/src/provider/Layers/ClaudeProvider.ts at checkClaudeProviderStatus and trace the data returned by probeClaudeCapabilities. Verify the unauthenticated case described by claude auth status, then ensure the provider reports an unauthenticated state when account signals are absent and exposes the Sign in action; authenticated Claude accounts and Bedrock should retain their authenticated status.
Written by the indexing model from the issue text.
Description
Summary
T3 Code reports the Claude provider as authenticated even when the Claude Code CLI is
not logged in. This hides the "Sign in" affordance and misleads users. Codex on the same
machine correctly reports "Not authenticated".
Environment
- T3 Code server
v0.0.42, modeweb, launched witht3 serve --host 0.0.0.0 - Claude Code CLI
2.1.284(also reproduced on2.1.283), Linux x64 (container) claude auth statusreturns:{ "loggedIn": false, "authMethod": "none", "apiProvider": "firstParty", "configDirectory": "/home/t3/.claude" }- No
~/.claude/.credentials.jsonexists;~/.claude.jsoncontains only anonymous
machineID/userID(no credentials).
Steps to reproduce
- On a machine where
claudeis installed onPATHbut has never been logged in. - Start the T3 server and open the web app → Claude is shown as Authenticated
(with a version advisory but no email/subscription), and no Sign in button appears.
Expected
Claude should be shown as Not authenticated (with a Sign in action) until the user logs
in — matching Codex's behavior.
Actual
Claude is shown as status: ready / auth.status: "authenticated" even though no account is
present, so the Sign in flow is never offered.
Root cause (pointer)
apps/server/src/provider/Layers/ClaudeProvider.ts → checkClaudeProviderStatus sets the
probe's auth to { status: "authenticated" } whenever the capability probe returns a value
(if (!capabilities) { … warning … } then unconditionally auth: { status: "authenticated" }),
without checking whether the account is actually logged in. The probe
(probeClaudeCapabilities) returns initialization data even when unauthenticated (account
fields absent), so capabilities is truthy and the provider is marked authenticated.
Suggested fix
Only mark the provider authenticated when the probe yields real auth signals (a non-empty
email, a subscriptionType, a subscription tokenSource, or apiProvider === "bedrock");
otherwise report unauthenticated (with status that surfaces the Sign in action), so the
UI offers claude auth login.
Impact
On shared/hosted machines (e.g. one server per user behind a proxy), users cannot discover how
to sign in from the UI and must know to run claude auth login in a terminal.
- Dominant language
- TypeScript
- Stars
- 23.6k
- Forks
- 6.1k
- Avg merge
- 9h 26m
- Merged PRs (30d)
- 340
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pingdotgg/t3code
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
pingdotgg/t3code#14160 · 1 comment ·
Maintainers usually reply within 1 day
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
pingdotgg/t3code#14067 · 1 comment ·
Maintainers usually reply within 1 day
-
bug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
pingdotgg/t3code#14066 · 1 comment ·
Maintainers usually reply within 1 day
-
bug upstream via-triage
Difficulty 1/5 Under an hour Newbie friendliness 90/100
pingdotgg/t3code#13990 · 1 comment ·
Maintainers usually reply within 1 day
All issues in pingdotgg/t3code
Similar issues
-
refactor
Difficulty 2/5 Half a day Newbie friendliness 84/100
Maintainers usually reply within 5 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
OHDSI/Data2Evidence#3450 ·
Maintainers usually reply within 2 days
-
e2e-failure ready-to-code
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
redhat-developer/rhdh-plugin-export-overlays#4011 · 1 comment ·
Maintainers usually reply within 1 day
-
automation missing-model model-sync provider:ofox
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
anomalyco/models.dev#8421 ·
Maintainers usually reply within 1 day
-
SlackAdapter and TelegramAdapter are not assignable to Adapter under exactOptionalPropertyTypesOpen
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day