pingdotgg / pingdotgg/t3code

[Bug]: Claude Settings reports authenticated while the launched CLI is logged out

Open
#7,690 0 comments 2 reactions 0 assignees View on GitHub

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
  1. Install Claude Code and authenticate it in an explicit config directory.
  2. 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 homePath setting.
  3. In the exact binary and environment used by T3, confirm that claude auth status returns JSON containing "loggedIn": false and exits with code 1.
  4. Open T3 Settings and inspect the Claude provider.
  5. 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 HOME to CLAUDE_CONFIG_DIR migration 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.