This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.
from line 65
6565| `API Error: 401 Invalid authentication credentials` | [Authentication](#api-error-401-invalid-authentication-credentials) |
6666| `Login expired · Please run /login` | [Authentication](#login-expired) |
6767| `Claude login not accepted · Run /login, then try again` | [Authentication](#claude-login-not-accepted) |
68| `Artifacts need a claude.ai login` | [Authentication](#artifacts-need-a-claude-ai-login) |
6869| `Not signed in to the Cloud gateway — run /login.` | [Authentication](#administrator-policy-requires-a-cloud-gateway-sign-in) |
6970| `Administrator policy requires a Cloud gateway sign-in on this machine` | [Authentication](#administrator-policy-requires-a-cloud-gateway-sign-in) |
7071| `Failed to authenticate: OAuth session expired and could not be refreshed` | [Authentication](#login-expired) |
from line 82
8182| `Issuer mismatch in authorization response (RFC 9207)` | [Authentication](#issuer-mismatch-in-authorization-response) |
8283| `Cloud gateway session expired — run /login to reconnect.` | [Authentication](#cloud-gateway-session-expired) |
8384| `Cloud gateway <url> no longer accepts this session` | [Authentication](#cloud-gateway-session-expired) |
85| `Sign-in timed out while waiting for you to continue. Try again.` | [Authentication](#sign-in-timed-out-while-waiting-for-you-to-continue) |
8486| `AWS credentials expired or invalid` | [Authentication](#aws-credentials-expired-or-invalid) |
8587| `AWS authentication failed` | [Authentication](#aws-authentication-failed) |
8688| `Google Cloud credentials expired or invalid` | [Authentication](#google-cloud-credentials-expired-or-invalid) |
from line 145
143145| `effort '<level>' is not supported when thinking is disabled` | [Request errors](#effort-isnt-available-with-thinking-turned-off) |
144146| `max_tokens must be greater than thinking.budget_tokens` | [Request errors](#thinking-budget-exceeds-output-limit) |
145147| `API Error: 400 due to tool use concurrency issues` | [Request errors](#tool-use-or-thinking-block-mismatch) |
148| `API Error: 400 orphaned tool_result in conversation history` | [Request errors](#tool-use-or-thinking-block-mismatch) |
149| `API Error: 400 duplicate tool_use ID in conversation history` | [Request errors](#tool-use-or-thinking-block-mismatch) |
146150| `[Unsupported tool content removed]` | [Request errors](#unsupported-tool-content-removed) |
147151| `server_tool_use.name: Input should be` on every turn of a resumed session | [Request errors](#unsupported-tool-content-removed) |
148152| `<model> can't help with this. Start a new session to continue` | [Request errors](#usage-policy-refusal) |
from line 197
193197| `No conversation found with session ID: <session-id>` | [Command-line errors](#no-conversation-found-with-the-session-id) |
194198| `Cannot switch renderers in this session` | [Command-line errors](#cannot-switch-renderers-in-this-session) |
195199| `Cannot switch renderers while work is running in the background` | [Command-line errors](#cannot-switch-renderers-in-this-session) |
200| `Couldn't open Claude Desktop` | [Command-line errors](#couldnt-open-claude-desktop) |
201| `Failed to open Claude Desktop. Please try opening it manually.` | [Command-line errors](#couldnt-open-claude-desktop) |
196202| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Command-line errors](#terminal-setup-left-your-zed-keymap-unchanged) |
197203| `Your Zed keymap isn't a readable list of keybindings` | [Command-line errors](#terminal-setup-left-your-zed-keymap-unchanged) |
198204| `Skill usage reports are not available on this connection.` | [Command-line errors](#skill-usage-reports-are-not-available-on-this-connection) |
from line 206
200206| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Command-line errors](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |
201207| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |
202208| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |
209| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |
203210| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |
204211| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Plugin errors](#plugin-command-references-user-config) |
205212| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Plugin errors](#plugin-command-references-user-config) |
from line 217
210217| `Plugin source path refused` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |
211218| `Failed to load marketplace configuration` | [Plugin errors](#failed-to-load-marketplace-configuration) |
212219| `Marketplace configuration file is corrupted` | [Plugin errors](#failed-to-load-marketplace-configuration) |
220| `Plugin "<name>@synced" is required by your organization and can't be disabled here` | [Plugin errors](#plugin-is-required-by-your-organization) |
213221| `would be spawned with zero tools — refusing` | [Tool errors](#agent-would-be-spawned-with-zero-tools) |
214222| `File is covered by a Read deny rule in your permission settings` | [Tool errors](#file-is-covered-by-a-read-deny-rule) |
215223| `subagent_type is required: the general-purpose agent is not available in this session` | [Tool errors](#subagent-type-is-required) |
from line 248
240248| `Can't open MCP settings in a background session` | [Background session errors](#commands-refused-in-a-background-session) |
241249| `blocked because the path is spelled in a form that cannot be safely resolved` | [Background session errors](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) |
242250| `blocked because the path is network-shaped` | [Background session errors](#write-or-command-blocked-because-the-path-names-a-network-location) |
251| `is isolated in the worktree <path>, but this command <reason>. Refusing to run it` | [Background session errors](#command-blocked-by-the-worktree-isolation-checks) |
252| `too complex to verify that it stays inside the worktree` | [Background session errors](#command-blocked-by-the-worktree-isolation-checks) |
243253| `This session has no saved transcript` | [Background session errors](#this-session-has-no-saved-transcript) |
244254| `Can't open — this session is running in another terminal` | [Background session errors](#this-session-is-running-in-another-terminal) |
245255| `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) |
from line 285
275285| `MCP server <name> is blocked by enterprise managed policy` | [Configuration warnings](#mcp-server-is-blocked-by-enterprise-managed-policy) |
276286| `Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) |
277287| `Managed settings drop-in directory could not be read` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) |
288| `otelHeadersHelper failed; telemetry is not being exported. See /status: ...` | [Configuration warnings](#otelheadershelper-failed) |
278289| `"crossSessionInbound" must be one of "accept", "hold", "refuse"` | [Configuration warnings](#crosssessioninbound-must-be-one-of-accept-hold-refuse) |
279290| `headersHelper not run — this workspace has no persisted trust` | [Configuration warnings](#headershelper-not-run) |
280291| `Invalid permission rule "..." was skipped: Malformed Tool(content) rule` | [Configuration warnings](#malformed-tool-content-rule) |
from line 603
592603**What to do:**
593604
594605* Run `/model` and select the variant without the `[1m]` suffix to fall back to the standard context window
595* Where the message names `/usage-credits`, run it to turn on metered billing for the 1M variant on Pro and Max, or to request usage credits from your admin on Team and Enterprise. Restart Claude Code once usage credits are on. Until you restart, the session stays at the standard context limit.
606* Where the message names `/usage-credits`, run it to turn on metered billing for the 1M variant on Pro and Max, or to request usage credits from your admin on Team and Enterprise. Once usage credits are on, restart Claude Code or start a new session, whichever the message says. Until then, the session stays at the standard context limit.
596607* If the error persists after `/model`, a 1M model ID may be set elsewhere. See [Setting your model](/docs/en/model-config#setting-your-model) for the configuration locations to check in priority order.
597608* To remove 1M variants from the model picker entirely, set [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/en/env-vars)
598609
from line 820
809820* Run the command configured in `apiKeyHelper` directly in your shell to reproduce the failure
810821* If the command reports an expired session, re-authenticate with your credential provider, for example by signing in to your SSO or secrets vault again
811822* Fix the command so it prints only the key to stdout, as a single token of printable ASCII up to 16,384 characters, and exits with code 0. See [rotate credentials with apiKeyHelper](/docs/en/llm-gateway-connect#rotate-credentials-with-apikeyhelper) for a working setup.
812* Run `/status` to confirm `apiKeyHelper` is the active credential source. Each time the command fails, its exit code and error output appear in an `Authentication` panel in the terminal. Before v2.1.212, the panel was titled `Cloud authentication`.
823* Run `/status` to see the failure and confirm `apiKeyHelper` is the active credential source. The `apiKeyHelper` row shows `Failing` with the last failure's detail, such as the exit code and the command's error output, and disappears after the next successful run. Before v2.1.274, `/status` showed only the credential source, not the failure.
824* Each time the command fails, its exit code and error output also appear in an `Authentication` panel in the terminal. Before v2.1.212, the panel was titled `Cloud authentication`.
813825
814826### Invalid request header value
815827
from line 1109
10971109
10981110* Run `/login`, complete the sign-in, then start the session again
10991111
1112<h3 id="artifacts-need-a-claude-ai-login">
1113 Artifacts need a claude.ai login
1114</h3>
1115
1116Claude Code refused an [artifact](/docs/en/artifacts) publish or read because the session has no claude.ai login it can use for artifacts.
1117
1118Every form of the message starts with the same words, followed by a remedy that depends on how your session authenticates. With no competing credential it reads:
1119
1120```text theme={null}
1121Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.
1122```
1123
1124**What to do:**
1125
1126* Run `/login` and select **Claude account with subscription**. The **Anthropic Console account** option doesn't provide claude.ai credentials.
1127* When the message names a credential that takes precedence, such as `ANTHROPIC_API_KEY`, an `apiKeyHelper` setting, or a Console key saved by a previous `/login`, remove it the way the message says, then run `/login`
1128* When the message says this remote session authenticates through the machine that launched it, sign in to claude.ai on that machine, then reconnect the session
1129* When the message says the credential is injected by the session's host environment, you can't change it in that session; start a session that is signed in to claude.ai
1130* See [Availability](/docs/en/artifacts#availability) for the other requirements artifacts have, such as plan, model provider, and organization policy
1131
11001132<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">
11011133 Administrator policy requires a Cloud gateway sign-in
11021134</h3>
from line 1467
14351467* Run `/login` in the session and complete the browser sign-in
14361468* For a non-interactive launch, start `claude` in the same environment, run `/login`, then rerun your command
14371469
1470### Sign-in timed out while waiting for you to continue
1471
1472During a [Claude apps gateway](/docs/en/claude-apps-gateway) sign-in, the gateway named the account that signed in, and Claude Code asked you to confirm it before saving the credential. You left the confirmation open past the sign-in's own expiry, and the gateway issued no refresh token that could renew it, so Claude Code stored nothing when you continued:
1473
1474```text theme={null}
1475Sign-in timed out while waiting for you to continue. Try again.
1476```
1477
1478**What to do:**
1479
1480* Run `/login` again and confirm the account before the sign-in expires
1481
14381482### Gateway refused the request
14391483
14401484You're signed in through a [Claude apps gateway](/docs/en/claude-apps-gateway), and a request returned a 403: the gateway, or the upstream behind it, refused it. Signing in again doesn't change a refusal, so the message points at your gateway administrator:
from line 1939
18951939Unable to resize image — its pixels could not be decoded (the file may be damaged, or use an encoding Claude Code cannot read), and it is over the … API limit (… raw, … base64), so it cannot be sent. Re-save it as a PNG or JPEG and try again.
18961940```
18971941
1898Claude Code normally resizes large images automatically. These errors mean the image couldn't be decoded or resized to fit within the API limits.
1899
1900**What to do:**
1901
1902* If the message asks you to convert the image, convert it to PNG, JPEG, GIF, or WebP and attach it again. Claude Code can verify dimensions for these formats from the file header, without decoding the image.
1903* If the message reports a dimension or size limit, resize or recompress the image below that limit before attaching.
1904* If the message names a cause, such as a CMYK JPEG, an animated WebP, or a possibly damaged file, re-save the image in the format the message suggests and attach it again.
1905
1906### PDF errors
1907
1908The PDF you attached couldn't be processed. The messages are shown here in their non-interactive form; in an interactive session they instead prompt you to double press esc and try again.
1909
1910```text theme={null}
1911PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).
1912PDF is password protected. Try using a CLI tool to extract or convert the PDF.
1913The PDF file was not valid. Try converting it to text first (e.g., pdftotext).
1914```
1915
1916**What to do:**
1917
1918* For oversized PDFs, ask Claude to read a page range with the Read tool instead of attaching the whole file, or extract text with a tool like `pdftotext` and reference the output file by path
1919* For protected or invalid PDFs, remove the password or re-export the file from its source application, then try again
1920
1921### Extra inputs are not permitted
1922
1923A proxy or LLM gateway between Claude Code and the API stripped the `anthropic-beta` request header, so the API rejected fields that depend on it.
1924
1925```text theme={null}
1926API Error: 400 ... Extra inputs are not permitted ... context_management
1927API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header
1928```
1929
1930Claude Code sends beta-only fields such as `context_management` and `effort` alongside an `anthropic-beta` header that enables them. When a gateway forwards the body but drops the header, the API sees fields it doesn't recognize.
1931
1932**What to do:**
1933
1934* Configure your gateway to forward the `anthropic-beta` header. See [feature pass-through](/docs/en/llm-gateway-protocol#feature-pass-through) for what gateways must forward.
1935* As a fallback, set [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/docs/en/env-vars) before launching. [Disable pre-release capabilities](/docs/en/llm-gateway-protocol#disable-pre-release-capabilities) covers the exact scope.
1936
1937### Tool input schema is invalid
1938
1939A tool in the request declared an `input_schema` that fails the API's JSON Schema validation, so the API rejected the whole request. The number after `tools.` is the failing tool's position in the request's tool list, not a name you can look up.
1940
1941```text theme={null}
1942API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid
1943API Error: 400 ... tools.N.custom.input_schema.properties: Property keys should match pattern '^[a-zA-Z0-9_.-]{1,64}$'
1944```
1945
1946The first form means the schema isn't valid JSON Schema draft 2020-12. The second means a top-level property name doesn't match the pattern the message quotes.
1947
1948Claude Code [excludes MCP tools whose input schema would fail this validation](/docs/en/mcp#tools-with-invalid-input-schemas) when it loads a server's tools, so requests normally never include one.
1949
1950On a [deployment where flag fetching is off](/docs/en/env-vars#features-that-need-feature-flag-fetching), or on a machine whose flags have never arrived, Claude Code records in the server's log which tool would be rejected but sends it anyway, so this error can still occur.
1951
1952The error can also occur for a tool whose schema declares a JSON Schema dialect other than draft 2020-12 in `$schema`. Claude Code doesn't check those schemas against the JSON Schema meta-schema, though the top-level property-name check still applies.
1953
1954Before v2.1.216, no deployment ran the exclusion checks.
1955
1956**What to do:**
1957
1958* If your Claude Code version is earlier than v2.1.216, run `claude update`.
1959* Remove or [disable](/docs/en/mcp#disable-a-server-without-removing-it) the MCP server that declares the invalid schema. The error names the tool only by position. On v2.1.216 or later, check each server's log for a line naming a tool whose input schema would be rejected. If no log names one, disable servers one at a time.
1960* If you maintain the server, fix the tool's `input_schema`. The schema must be valid JSON Schema, and top-level property names must be 1 to 64 characters long and use only ASCII letters and digits, `_`, `.`, and `-`. See [Tools with invalid input schemas](/docs/en/mcp#tools-with-invalid-input-schemas).
1961
1962<h3 id="theres-an-issue-with-the-selected-model">
1963 There's an issue with the selected model
1964</h3>
1965
1966The configured model name was not recognized or your account lacks access to it. As of v2.1.160 the trailing hint, shown here in its interactive form, varies by surface.
1967
1968```text theme={null}
1969There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.
1970```
1971
1972**What to do:**
1973
1974* **Interactive CLI**: run `/model` to pick from models available to your account.
1975* **Non-interactive mode (`-p`)**: pass `--model` with a valid alias or ID, or set [`ANTHROPIC_MODEL`](/docs/en/env-vars). The error text shows `Run --model` on this surface.
1976* **Agent SDK**: the error text omits the hint because the model is set programmatically. Set [`model` on `Options`](/docs/en/agent-sdk/typescript#options) in TypeScript or [`ClaudeAgentOptions(model=...)`](/docs/en/agent-sdk/python#claudeagentoptions) in Python, and handle the structured `model_not_found` error to surface your own retry or model picker.
1977* Use an alias such as `sonnet` or `opus` instead of a full versioned ID. Aliases resolve to a maintained default so they don't go stale. See [Model configuration](/docs/en/model-config).
1978* If the wrong model keeps coming back in the CLI, a stale ID is set somewhere. Check the places you can set a model in [priority order](/docs/en/model-config#setting-your-model) and remove the stale value.
1979* A newly launched model can be available on the Anthropic API before Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry offers it. If you pinned a new model ID on one of those providers and see this error, check your provider's model catalog for availability in your region, and keep the previous version pinned until the new one appears there.
1980* Claude Code reports an expired claude.ai login as [Login expired](#login-expired), not as this error. Before v2.1.206, an expired login that could no longer be refreshed failed every model with this error; run `/login` if you
1942Claude Code normally res