Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

CLAUDE_CODE_OAUTH_TOKEN

env in the build JSON

A Claude Code environment variable, read out of the shipped bundle. It has been in the build since v2.1.138, including the newest one read.

Three artifact environment variables are now recognised, with the API token stripped from spawned processes as a secret.

Not Anthropic's. This is the line from the earliest changelog entry here that named it, v2.1.221.

First seen v2.1.138 9 May 2026
Last seen v2.1.308 22 Oct 2026
Builds149 / 149on this box, as of v2.1.308
Written about v1.0.44 first named in a changelog, 7 Jul 2025
v2.1.138in the build not in the build never minedv2.1.308

In the changelogs

34

Releases whose published page names CLAUDE_CODE_OAUTH_TOKEN.

  1. v2.1.307
    Spare SDK processes started by a launcher refuse a sign-in token passed at claim time

    A pre-warmed Claude Code process started by an organization's launcher now refuses CLAUDE_CODE_OAUTH_TOKEN when claimed, and asks its host instead

    found in this entry's text

  2. v2.1.307
    Claude Code can sign in with a login lent by the desktop app

    A sign-in lent by the desktop app now counts like CLAUDE_CODE_OAUTH_TOKEN, though plugins cannot use it

    named in this entry, found in this entry's text

  3. v2.1.307
    An OAuth token now wins over host-managed mode

    With CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST set, Claude Code now uses a supplied OAuth token instead of the host's sign-in

    named in this entry, found in this entry's text

  4. v2.1.307
    Organization sign-in rules now cover sign-ins from the desktop app

    When forceLoginOrgUUID pins an organization, Claude Code now also checks a sign-in provided by the desktop app

    found in this entry's text

  5. v2.1.307
    A remote host's new sign-in token may be held back instead of applied

    When a remote connection sends a new CLAUDE_CODE_OAUTH_TOKEN, Claude Code can now pass it to a separate check rather than switching to it

    named in this entry, found in this entry's text

  6. v2.1.307
    Organisation change check now also covers host-managed sign-in

    Claude Code now uses CLAUDE_CODE_ORGANIZATION_UUID to spot an organisation change when sign-in is managed for it

    named in this entry, found in this entry's text

  7. v2.1.301
    CLAUDE_CODE_OAUTH_TOKEN is now read through a helper in the token refresh check

    The token-refresh check now reads CLAUDE_CODE_OAUTH_TOKEN through a helper instead of directly from the environment

    found in this entry's text, named in this entry

  8. v2.1.300
    Analytics now note where your sign-in credential came from

    Some analytics events now record how the credential was supplied, such as an environment variable, a file descriptor or none at all

    found in this entry's text

  9. v2.1.295
    Usage data now records whether your git working copy was clean at start

    Usage data now notes whether your git working copy had changes when the session started, and some usage data can be held back from sending

    found in this entry's text

  10. v2.1.290
    Claude Code can detect an existing sign-in from token variables

    A new check finds out whether a usable sign-in already exists, for example from CLAUDE_CODE_OAUTH_TOKEN

    found in this entry's text

  11. v2.1.288
    Login now tells you when your sign-in worked but could not be saved

    If sign-in succeeds in the browser but your credentials cannot be stored, login now shows a dedicated screen explaining what happened and what to do

    found in this entry's text

  12. v2.1.285
    Detection of sign-in forwarded over SSH now checks for a placeholder

    Claude Code recognises SSH-forwarded sign-in when a socket is set and exactly one credential variable holds the value ssh-placeholder

    found in this entry's text

  13. v2.1.284
    Your plan name can now come from your organization's account

    Claude Code can show your plan as "Claude" plus the name your organization's account gives, instead of a fixed label

    found in this entry's text

  14. v2.1.281
    Login fails loudly when credentials can't be saved (e.g. locked macOS keychain)

    Login now shows an error when your credentials can't be saved, for example because the macOS keychain is locked

    found in this entry's text, named in this entry

  15. v2.1.281
    Background-session child environment: auth and new variables handled explicitly

    Background sessions now start from a cleaned environment, with login variables added back and some internal variables left out

    found in this entry's text

  16. v2.1.271
    ANTHROPIC_UNIX_SOCKET auth message now checks for CLAUDE_CODE_OAUTH_TOKEN

    Diagnostic message for ANTHROPIC_UNIX_SOCKET now explicitly flags a missing CLAUDE_CODE_OAUTH_TOKEN

    found in this entry's text

  17. v2.1.271
    Grove config check now gated behind an additional OAuth-scope/token check

    Grove config check now also requires a specific OAuth scope or a bare CLAUDE_CODE_OAUTH_TOKEN

    found in this entry's text

  18. v2.1.267
    Auth check shortcut for ANTHROPIC_UNIX_SOCKET sessions

    Sessions using ANTHROPIC_UNIX_SOCKET now skip most auth checks and rely only on token/key presence

    found in this entry's text

  19. v2.1.267
    Unix-socket sessions determine auth type from OAuth token env var, skipping keychain lookup

    Unix-socket sessions now report auth type from the OAuth token env var instead of checking the keychain

    found in this entry's text

  20. v2.1.257
    Simplified cloud/CI environment detection

    Detection of external orchestration now checks env var names against allowlists, dropping several individual checks.

    found in this entry's text

  21. v2.1.251
    Subscription and API-key caches can now be cleared explicitly

    Logging in or out now clears cached key and subscription state properly.

    found in this entry's text

  22. v2.1.246
    Credentials are primed through the store at start-up

    Login tokens are warmed at startup, and skipped entirely for token-based auth.

    named in this entry, found in this entry's text

  23. v2.1.238
    OAuth refresh-token lookup goes async and skips macOS

    The stored-refresh-token check now runs asynchronously and returns false straight away on macOS.

    found in this entry's text

  24. v2.1.234
    The CLAUDE_CODE_OAUTH_TOKEN login warning can arrive as its own message

    The warning about a set OAuth token env var can now arrive as its own message after login.

    named in this entry, found in this entry's text

  25. v2.1.229
    /login warns if an OAuth token is set in your environment

    After logging in, you're warned if an OAuth token in your environment will override it later.

    named in this entry, found in this entry's text

  26. v2.1.229
    OAuth token warning no longer tells you to unset the variable

    The OAuth token login warning now correctly says your session switches to the new credentials.

    named in this entry, found in this entry's text

  27. v2.1.227
    Two memory-API environment variables are hidden from commands Claude runs

    Your memory API base URL and token are now hidden from every command Claude runs.

    found in this entry's text

  28. v2.1.225
    OAuth 401 recovery no longer silently replaces a user-supplied token

    Your explicitly set OAuth token is no longer silently swapped for a stored credential after a 401.

    named in this entry, found in this entry's text

  29. v2.1.223
    Clearer failures when claude.ai project scopes can't be obtained

    When project permissions fail, you now get a specific reason and advice instead of a vague error.

    named in this entry, found in this entry's text

  30. v2.1.223
    Settings-supplied API and credential env vars are stripped when ANTHROPIC_UNIX_SOCKET is set

    When you connect through a unix socket, settings files can no longer override your API keys or endpoint.

    named in this entry, found in this entry's text

  31. v2.1.221
    Artifact environment variables, with the API token treated as a credential

    Three artifact environment variables are now recognised, with the API token stripped from spawned processes as a secret.

    found in this entry's text

  32. v2.1.221
    Artifact credentials and artifact base URLs are stripped from child process environments

    Artifact tokens and artifact base URLs no longer leak into processes Claude spawns.

    named in this entry, found in this entry's text

  33. v2.1.84
    Improved Remote Control Error Messages

    found in this entry's text

  34. v1.0.44
    New Features

    found in this entry's text

First cited

9

The earliest release whose published evidence quoted CLAUDE_CODE_OAUTH_TOKEN was v2.1.225, 7 Aug 2026. That is the oldest release this project wrote about it, so it is a floor on the name's age and not the release that introduced it. It is not a presence reading: which builds carried the name is the table below.

ReleaseDateThe span that was quoted
v2.1.2257 Aug 2026OAuth 401: keeping the user-supplied CLAUDE_CODE_OAUTH_TOKEN instead of adopting the stored credential.
v2.1.22912 Aug 2026Note: CLAUDE_CODE_OAUTH_TOKEN was set in your environment when /login started.
v2.1.23820 Aug 2026CLAUDE_CODE_OAUTH_TOKEN
v2.1.2679 Sep 2026if (E1()) return a.CLAUDE_CODE_OAUTH_TOKEN ? "oauth" : "api_key";
v2.1.2679 Sep 2026return a.CLAUDE_CODE_OAUTH_TOKEN || a.ANTHROPIC_API_KEY ? void 0 : "no_auth"
v2.1.27114 Sep 2026ANTHROPIC_UNIX_SOCKET is set without CLAUDE_CODE_OAUTH_TOKEN, so requests on the socket carry no claude.ai login

3 further spans in the ledger name it. The list above is the earliest first and stops at 6.

Presence across releases

1
BuildsHow manyDatesReading
v2.1.138 – v2.1.308149 builds9 May 2026 → 22 Oct 2026 ◆in the build

Build by build

149

One row per release since the first build this name was read out of. Absent means the build was read and the name was not in it, never mined means no bundle for that release was ever archived, and a declared type or a default is only ever what that release's own bundle stated.

BuildDateStateThe record behind it
v2.1.1389 May 2026·presentverdict: present
v2.1.13911 May 2026·presentverdict: present
v2.1.14012 May 2026·presentverdict: present
v2.1.141·presentverdict: present
v2.1.142·presentverdict: present
v2.1.143·presentverdict: present
v2.1.144·presentverdict: present
v2.1.145·presentverdict: present
v2.1.146·presentverdict: present
v2.1.147·presentverdict: present
v2.1.148·presentverdict: present
v2.1.149·presentverdict: present
v2.1.150·presentverdict: present
v2.1.152·presentverdict: present
v2.1.153·presentverdict: present
v2.1.154·presentverdict: present
v2.1.156·presentverdict: present
v2.1.157·presentverdict: present
v2.1.158·presentverdict: present
v2.1.159·presentverdict: present
v2.1.160·presentverdict: present · str
v2.1.161·presentverdict: present · str
v2.1.162·presentverdict: present · str
v2.1.1634 Jun 2026·presentverdict: present · str
v2.1.1655 Jun 2026·presentverdict: present · str
v2.1.1665 Jun 2026·presentverdict: present · str
v2.1.1676 Jun 2026·presentverdict: present · str
v2.1.1686 Jun 2026·presentverdict: present · str
v2.1.1698 Jun 2026·presentverdict: present · str
v2.1.1709 Jun 2026·presentverdict: present · str
v2.1.17210 Jun 2026·presentverdict: present · str
v2.1.17311 Jun 2026·presentverdict: present · str
v2.1.17411 Jun 2026·presentverdict: present · str
v2.1.17512 Jun 2026·presentverdict: present · str
v2.1.17612 Jun 2026·presentverdict: present · str
v2.1.17713 Jun 2026·presentverdict: present · str
v2.1.17815 Jun 2026·presentverdict: present · str
v2.1.17916 Jun 2026·presentverdict: present · str
v2.1.18117 Jun 2026·presentverdict: present · str
v2.1.18218 Jun 2026·presentverdict: present · str
v2.1.18319 Jun 2026·presentverdict: present · str
v2.1.18520 Jun 2026·presentverdict: present · str
v2.1.18622 Jun 2026·presentverdict: present · str
v2.1.18723 Jun 2026·presentverdict: present · str
v2.1.19024 Jun 2026·presentverdict: present · str
v2.1.19124 Jun 2026·presentverdict: present · str
v2.1.19325 Jun 2026·presentverdict: present · str
v2.1.19526 Jun 2026·presentverdict: present · str
v2.1.19629 Jun 2026·presentverdict: present · str
v2.1.19730 Jun 2026·presentverdict: present · str
v2.1.1981 Jul 2026·presentverdict: present · str
v2.1.1992 Jul 2026·presentverdict: present · str
v2.1.2003 Jul 2026·presentverdict: present · str
v2.1.2013 Jul 2026·presentverdict: present · str
v2.1.2026 Jul 2026·presentverdict: present · str
v2.1.2037 Jul 2026·presentverdict: present · str
v2.1.2048 Jul 2026·presentverdict: present · str
v2.1.2058 Jul 2026·presentverdict: present · str
v2.1.2069 Jul 2026·presentverdict: present · str
v2.1.20710 Jul 2026·presentverdict: present · str
v2.1.20813 Jul 2026·presentverdict: present · str
v2.1.20914 Jul 2026·presentverdict: present · str
v2.1.21014 Jul 2026·presentverdict: present · str
v2.1.21115 Jul 2026·presentverdict: present · str
v2.1.21216 Jul 2026·presentverdict: present · str
v2.1.21317 Jul 2026·presentverdict: present · str
v2.1.21418 Jul 2026·presentverdict: present · str
v2.1.21519 Jul 2026·presentverdict: present · str
v2.1.21620 Jul 2026·presentverdict: present · str
v2.1.21721 Jul 2026·presentverdict: present · str
v2.1.21822 Jul 2026·presentverdict: present · str
v2.1.21924 Jul 2026·presentverdict: present · str
v2.1.22024 Jul 2026·presentverdict: present · str
v2.1.2213 Aug 2026·presentverdict: present · str
v2.1.2224 Aug 2026·presentverdict: present · str
v2.1.2235 Aug 2026·presentverdict: present · str
v2.1.2247 Aug 2026·presentverdict: present · str
v2.1.2257 Aug 2026·presentverdict: present · str
v2.1.2268 Aug 2026·presentverdict: present · str
v2.1.22710 Aug 2026·presentverdict: present · str
v2.1.22811 Aug 2026·presentverdict: present · str
v2.1.22912 Aug 2026·presentverdict: present · str
v2.1.23113 Aug 2026·presentverdict: present · str
v2.1.23213 Aug 2026·presentverdict: present · str
v2.1.23314 Aug 2026·presentverdict: present · str
v2.1.23417 Aug 2026·presentverdict: present · str
v2.1.23518 Aug 2026·presentverdict: present · str
v2.1.23619 Aug 2026·presentverdict: present · str
v2.1.23719 Aug 2026·presentverdict: present · str
v2.1.23820 Aug 2026·presentverdict: present · str
v2.1.23921 Aug 2026·presentverdict: present · str
v2.1.24022 Aug 2026·presentverdict: present · str
v2.1.24122 Aug 2026·presentverdict: present · str
v2.1.24224 Aug 2026·presentverdict: present · str
v2.1.24324 Aug 2026·presentverdict: present · str
v2.1.24525 Aug 2026·presentverdict: present · str
v2.1.24625 Aug 2026·presentverdict: present · str
v2.1.24726 Aug 2026·presentverdict: present · str
v2.1.24827 Aug 2026·presentverdict: present · str
v2.1.25027 Aug 2026·presentverdict: present · str
v2.1.25128 Aug 2026·presentverdict: present · str
v2.1.25231 Aug 2026·presentverdict: present · str
v2.1.2571 Sep 2026·presentverdict: present · str
v2.1.2581 Sep 2026·presentverdict: present · str
v2.1.2592 Sep 2026·presentverdict: present · str
v2.1.2603 Sep 2026·presentverdict: present · str
v2.1.2614 Sep 2026·presentverdict: present · str
v2.1.2636 Sep 2026·presentverdict: present · str
v2.1.2658 Sep 2026·presentverdict: present · str
v2.1.2668 Sep 2026·presentverdict: present · str
v2.1.2679 Sep 2026·presentverdict: present · str
v2.1.26810 Sep 2026·presentverdict: present · str
v2.1.26911 Sep 2026·presentverdict: present · str
v2.1.27012 Sep 2026·presentverdict: present · str
v2.1.27114 Sep 2026·presentverdict: present · str
v2.1.27214 Sep 2026·presentverdict: present · str
v2.1.27315 Sep 2026·presentverdict: present · str
v2.1.27416 Sep 2026·presentverdict: present · str
v2.1.27517 Sep 2026·presentverdict: present · str
v2.1.27618 Sep 2026·presentverdict: present · str
v2.1.27718 Sep 2026·presentverdict: present · str
v2.1.27819 Sep 2026·presentverdict: present · str
v2.1.28022 Sep 2026·presentverdict: present · str
v2.1.28123 Sep 2026·presentverdict: present · str
v2.1.28224 Sep 2026·presentverdict: present · str
v2.1.28325 Sep 2026·presentverdict: present · str
v2.1.28428 Sep 2026·presentverdict: present · str
v2.1.28529 Sep 2026·presentverdict: present · str
v2.1.28630 Sep 2026·presentverdict: present · str
v2.1.2871 Oct 2026·presentverdict: present · str
v2.1.2882 Oct 2026·presentverdict: present · str
v2.1.2893 Oct 2026·presentverdict: present · str
v2.1.2905 Oct 2026·presentverdict: present · str
v2.1.2916 Oct 2026·presentverdict: present · str
v2.1.2926 Oct 2026·presentverdict: present · str
v2.1.2937 Oct 2026·presentverdict: present · str
v2.1.2948 Oct 2026·presentverdict: present · str
v2.1.2958 Oct 2026·presentverdict: present · str
v2.1.2969 Oct 2026·presentverdict: present · str
v2.1.29914 Oct 2026·presentverdict: present · str
v2.1.30014 Oct 2026·presentverdict: present · str
v2.1.30115 Oct 2026·presentverdict: present · str
v2.1.30216 Oct 2026·presentverdict: present · str
v2.1.30318 Oct 2026·presentverdict: present · str
v2.1.30419 Oct 2026·presentverdict: present · str
v2.1.30520 Oct 2026·presentverdict: present · str
v2.1.30621 Oct 2026·presentverdict: present · str
v2.1.30721 Oct 2026·presentverdict: present · str
v2.1.30822 Oct 2026·presentverdict: present · str

Read out of the published npm bundle release by release, and out of Anthropic's own documentation as this site captured it. Nothing on this page is a description anybody here wrote about what the environment variable does. All environment variables.

Feedback