[Bug]: Claude Settings reports authenticated while the launched CLI is logged out
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Install Claude Code and authenticate it in an explicit config directory.
- Start T3 Code in an environment that resolves a different, unauthenticated Claude config directory. One way to hit this is to keep the working OAuth session in an explicitly configured Claude home while a fresh local T3 server has no corresponding
homePathsetting. - In the exact binary and environment used by T3, confirm that
claude auth statusreturns JSON containing"loggedIn": falseand exits with code 1. - Open T3 Settings and inspect the Claude provider.
- Start a new Claude chat and send a message.
Expected behavior
If claude auth status reports loggedIn: false for the binary, environment, and CLAUDE_CONFIG_DIR that T3 will use for chats, Settings should report Claude as unauthenticated and tell the user to log in.
If the status cannot be verified, T3 should report an unknown/warning state rather than authenticated.
Actual behavior
Settings reports the Claude provider as ready and authenticated because the SDK initialization probe returned a capabilities object, even though that object contained no usable account metadata and the CLI used for chats was logged out.
Starting a chat then fails with authentication_failed.
Impact
Major degradation or frequent failure
The status shown in Settings is not actionable and contradicts the provider process that T3 launches. Users can repeatedly retry chats without being told that T3 is resolving a different unauthenticated Claude configuration.
Version or commit
T3 Code main at beab6886f45bf42906d0bd01aefe5dfe9e66a867; Claude Code 2.1.237
Environment
macOS 26.5.1 arm64, Bun 1.3.10, Node 24.11.1, Claude Code 2.1.237, claude.ai subscription OAuth
Logs or stack traces
# Same binary/config environment used by T3
$ claude auth status
{"loggedIn":false,"authMethod":"none"}
# exit code: 1
# Provider events
"apiKeySource":"none"
"error":"authentication_failed"
"result":"Failed to authenticate: OAuth session expired and could not be refreshed"
No credentials were modified by T3 in this reproduction.
Workaround
Set the Claude home in T3 Settings to the absolute config directory that contains the working OAuth session, for example /Users/<user>/.claude, then restart the affected provider session.
Related but distinct:
- #4696 covers the documented
HOMEtoCLAUDE_CONFIG_DIRmigration for multi-account setups. - #6022 covers Claude credentials being overwritten after refresh failures.
This report is specifically about the provider snapshot claiming authenticated when the same CLI environment reports loggedIn: false.
Contributor 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.
Research direction
Start in apps/server and reproduce the issue with claude auth status using the exact binary, environment, and CLAUDE_CONFIG_DIR used by T3. Trace how the provider snapshot determines authentication from the SDK initialization probe. Done means Settings reflects loggedIn: false and shows an unknown or warning state when authentication cannot be verified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- authentication, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100