SpyBara
Go Premium

Documentation 2026-09-13 21:00 UTC to 2026-09-14 22:58 UTC

19 files changed +75 −80. View all changes and history on the product overview
2026
Mon 28 02:59 Sun 27 23:59 Sat 26 23:59 Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Thu 17 05:00 Wed 16 22:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Fri 11 23:01 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Sat 5 14:59 Fri 4 23:59 Thu 3 16:59 Wed 2 04:58 Tue 1 21:02
Details

221 221 

222As of Claude Code v2.1.181, the flat output from `aws configure export-credentials --format process` is also accepted, with the same keys at the top level instead of nested under `Credentials`.222As of Claude Code v2.1.181, the flat output from `aws configure export-credentials --format process` is also accepted, with the same keys at the top level instead of nested under `Credentials`.

223 223 

224`Expiration` is optional. As of Claude Code v2.1.176, when the command returns a valid ISO 8601 `Expiration`, Claude Code caches the credentials until five minutes before that time. Without it, or on earlier versions, credentials are cached for one hour.224`Expiration` is optional. When the command returns a valid ISO 8601 `Expiration`, Claude Code caches the credentials until five minutes before that time. Without it, credentials are cached for one hour.

225 225 

226When you configure `awsCredentialExport` without `awsAuthRefresh`, Claude Code uses the exported credentials directly and doesn't re-resolve the AWS default credential provider chain at startup. Requires Claude Code v2.1.206 or later.226When you configure `awsCredentialExport` without `awsAuthRefresh`, Claude Code uses the exported credentials directly and doesn't re-resolve the AWS default credential provider chain at startup. Requires Claude Code v2.1.206 or later.

227 227 

Details

516claude -p "<your prompt>" --output-format json | your_command516claude -p "<your prompt>" --output-format json | your_command

517```517```

518 518 

519Use `--verbose` for debugging during development, and turn it off in production.

520 

521### Run autonomously with auto mode519### Run autonomously with auto mode

522 520 

523For uninterrupted execution with background safety checks, use [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode). A classifier model reviews commands before they run, blocking scope escalation, unknown infrastructure, and hostile-content-driven actions while letting routine work proceed without prompts.521For uninterrupted execution with background safety checks, use [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode). A classifier model reviews commands before they run, blocking scope escalation, unknown infrastructure, and hostile-content-driven actions while letting routine work proceed without prompts.

Details

1447The explorer covers files you author and edit. A few related files live elsewhere:1447The explorer covers files you author and edit. A few related files live elsewhere:

1448 1448 

1449| File | Location | Purpose |1449| File | Location | Purpose |

1450| ----------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1450| ----------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1451| `managed-settings.json` | System-level, varies by OS | Enterprise-enforced settings that you can't override, apart from [narrow exceptions](/docs/en/settings#security-keys-where-the-stricter-value-applies). See [where to save the file](/docs/en/managed-settings#deploy-a-managed-settings-file) and [which managed source Claude Code uses](/docs/en/managed-settings#precedence-within-the-managed-tier). |1451| `managed-settings.json` | System-level, varies by OS | Enterprise-enforced settings that you can't override, apart from [narrow exceptions](/docs/en/settings#security-keys-where-the-stricter-value-applies). See [where to save the file](/docs/en/managed-settings#deploy-a-managed-settings-file) and [which managed source Claude Code uses](/docs/en/managed-settings#precedence-within-the-managed-tier). |

1452| `CLAUDE.local.md` | Project root | Your private preferences for this project, loaded alongside CLAUDE.md. Create it manually and add it to `.gitignore`. |1452| `CLAUDE.local.md` | Project root | Your private preferences for this project, loaded alongside CLAUDE.md. Create it manually and add it to `.gitignore`. |

1453| Installed plugins | `~/.claude/plugins` | Cloned marketplaces, installed plugin versions, and per-plugin data, managed by `claude plugin` commands. For a plugin installed from a marketplace [`command` source](/docs/en/plugin-marketplaces#command-sources) in link mode, Claude Code stores links here instead of a copy, and the plugin's files stay in the directory the command prints. See [plugin caching](/docs/en/plugins-reference#plugin-caching-and-file-resolution) for how orphaned versions are cleaned up. |1453| Installed plugins | `~/.claude/plugins` | Cloned marketplaces, installed plugin versions, and per-plugin data, managed by `claude plugin` commands. For a plugin installed from a marketplace [`command` source](/docs/en/plugin-marketplaces#command-sources) in link mode, Claude Code stores links here instead of a copy, and the plugin's files stay in the directory the command prints. A `command` source requires Claude Code v2.1.229 or later. See [plugin caching](/docs/en/plugins-reference#plugin-caching-and-file-resolution) for how orphaned versions are cleaned up. |

1454 1454 

1455`~/.claude` also holds data Claude Code writes as you work: transcripts, prompt history, file snapshots, caches, and logs. See [application data](#application-data) below.1455`~/.claude` also holds data Claude Code writes as you work: transcripts, prompt history, file snapshots, caches, and logs. See [application data](#application-data) below.

1456 1456 


1545* **Auto memory**: the sweep doesn't delete the memory files in a project's [auto memory](/docs/en/memory#auto-memory) directory, `projects/<project>/memory/`. Claude Code removes that directory only if it has been empty for the whole retention period. Before v2.1.228, the sweep treated folders inside the memory directory as session data and could delete old files beneath it.1545* **Auto memory**: the sweep doesn't delete the memory files in a project's [auto memory](/docs/en/memory#auto-memory) directory, `projects/<project>/memory/`. Claude Code removes that directory only if it has been empty for the whole retention period. Before v2.1.228, the sweep treated folders inside the memory directory as session data and could delete old files beneath it.

1546* **Claude Desktop and Cowork transcripts**: Claude Code keeps the transcript of a session you started or most recently continued in Claude Desktop or Cowork at any age. To give these transcripts an age limit, set [`desktopSessionCleanupPeriodDays`](/docs/en/settings-reference#desktopsessioncleanupperioddays). When [managed settings](/docs/en/managed-settings) set `cleanupPeriodDays`, Claude Code deletes these transcripts after that period instead. Requires Claude Code v2.1.248 or later; earlier versions delete them after `cleanupPeriodDays`.1546* **Claude Desktop and Cowork transcripts**: Claude Code keeps the transcript of a session you started or most recently continued in Claude Desktop or Cowork at any age. To give these transcripts an age limit, set [`desktopSessionCleanupPeriodDays`](/docs/en/settings-reference#desktopsessioncleanupperioddays). When [managed settings](/docs/en/managed-settings) set `cleanupPeriodDays`, Claude Code deletes these transcripts after that period instead. Requires Claude Code v2.1.248 or later; earlier versions delete them after `cleanupPeriodDays`.

1547 1547 

1548Claude Code skips the sweep entirely in these cases:1548Claude Code skips the age-based sweep in these cases:

1549 1549 

1550* **Bare mode**: when you run `claude -p` with [`--bare`](/docs/en/headless#start-faster-with-bare-mode), Claude Code doesn't run the sweep in that session.1550* **Bare mode**: when you run `claude -p` with [`--bare`](/docs/en/headless#start-faster-with-bare-mode), Claude Code doesn't run the sweep in that session.

1551* **Paused sweep**: if Claude Code can't safely determine the retention period, it pauses the retention cleanup sweep; the [`retention_sweep` event](/docs/en/monitoring-usage#retention-sweep-event) lists each configuration that pauses it. When the cause is a settings file that can't be read or parsed, or settings errors with `cleanupPeriodDays` or `desktopSessionCleanupPeriodDays` explicitly set, Claude Code also shows a warning in `/status` until you fix the settings errors. When [managed settings](/docs/en/server-managed-settings) provide `cleanupPeriodDays`, Claude Code runs the sweep at the managed value in either case.1551* **Paused sweep**: if Claude Code can't safely determine the retention period, it pauses the retention cleanup sweep; the [`retention_sweep` event](/docs/en/monitoring-usage#retention-sweep-event) lists each configuration that pauses it. When the cause is a settings file that can't be read or parsed, or settings errors with `cleanupPeriodDays` or `desktopSessionCleanupPeriodDays` explicitly set, Claude Code also shows a warning in `/status` until you fix the settings errors. When [managed settings](/docs/en/server-managed-settings) provide `cleanupPeriodDays`, Claude Code runs the sweep at the managed value in either case.

Details

472<AccordionGroup>472<AccordionGroup>

473 <Accordion title="Anthropic services">473 <Accordion title="Anthropic services">

474 * api.anthropic.com474 * api.anthropic.com

475 * statsig.anthropic.com

476 * docs.claude.com475 * docs.claude.com

477 * platform.claude.com476 * platform.claude.com

478 * code.claude.com477 * code.claude.com


544 * [www.java.net](http://www.java.net)543 * [www.java.net](http://www.java.net)

545 * download.oracle.com544 * download.oracle.com

546 * yum.oracle.com545 * yum.oracle.com

546 * \*.r2.cloudflarestorage.com

547 </Accordion>547 </Accordion>

548 548 

549 <Accordion title="JavaScript and Node package managers">549 <Accordion title="JavaScript and Node package managers">


554 * npmjs.org554 * npmjs.org

555 * yarnpkg.com555 * yarnpkg.com

556 * registry.yarnpkg.com556 * registry.yarnpkg.com

557 * jsr.io

558 * npm.jsr.io

557 </Accordion>559 </Accordion>

558 560 

559 <Accordion title="Python package managers">561 <Accordion title="Python package managers">


608 * central.maven.org610 * central.maven.org

609 * repo1.maven.org611 * repo1.maven.org

610 * repo.maven.apache.org612 * repo.maven.apache.org

613 * maven.google.com

611 * jcenter.bintray.com614 * jcenter.bintray.com

612 * gradle.org615 * gradle.org

613 * [www.gradle.org](http://www.gradle.org)616 * [www.gradle.org](http://www.gradle.org)

614 * services.gradle.org617 * services.gradle.org

615 * plugins.gradle.org618 * plugins.gradle.org

619 * plugins-artifacts.gradle.org

616 * kotlinlang.org620 * kotlinlang.org

617 * [www.kotlinlang.org](http://www.kotlinlang.org)621 * [www.kotlinlang.org](http://www.kotlinlang.org)

618 * spring.io622 * spring.io


690 </Accordion>694 </Accordion>

691 695 

692 <Accordion title="Cloud services and monitoring">696 <Accordion title="Cloud services and monitoring">

693 * statsig.com

694 * [www.statsig.com](http://www.statsig.com)

695 * api.statsig.com

696 * sentry.io

697 * \*.sentry.io

698 * downloads.sentry-cdn.com

699 * http-intake.logs.datadoghq.com697 * http-intake.logs.datadoghq.com

700 * browser-intake-us5-datadoghq.com

701 * \*.datadoghq.com698 * \*.datadoghq.com

702 * \*.datadoghq.eu699 * \*.datadoghq.eu

703 * api.honeycomb.io700 * api.honeycomb.io

Details

408| [Routines](/docs/en/routines) | Cloud, Anthropic-managed by default | Tasks that should run even when your computer is off. Can also trigger on API calls or GitHub events in addition to a schedule. Configure at [claude.ai/code/routines](https://claude.ai/code/routines). |408| [Routines](/docs/en/routines) | Cloud, Anthropic-managed by default | Tasks that should run even when your computer is off. Can also trigger on API calls or GitHub events in addition to a schedule. Configure at [claude.ai/code/routines](https://claude.ai/code/routines). |

409| [Desktop scheduled tasks](/docs/en/desktop-scheduled-tasks) | Your machine, via the desktop app | Tasks that need direct access to local files, tools, or uncommitted changes. |409| [Desktop scheduled tasks](/docs/en/desktop-scheduled-tasks) | Your machine, via the desktop app | Tasks that need direct access to local files, tools, or uncommitted changes. |

410| [GitHub Actions](/docs/en/github-actions) | Your CI pipeline | Tasks tied to repo events like opened PRs, or cron schedules that should live alongside your workflow config. |410| [GitHub Actions](/docs/en/github-actions) | Your CI pipeline | Tasks tied to repo events like opened PRs, or cron schedules that should live alongside your workflow config. |

411| [`/loop`](/docs/en/scheduled-tasks) | The current CLI session | Quick polling while a session is open. Tasks stop when you start a new conversation; `--resume` and `--continue` restore unexpired ones. |411| [`/loop`](/docs/en/scheduled-tasks) | The current CLI session | Quick polling while a session is open. `--resume` and `--continue` restore unexpired fixed-interval loops. |

412 412 

413<Tip>413<Tip>

414 When writing prompts for scheduled tasks, be explicit about what success looks like and what to do with results. The task runs autonomously, so it can't ask clarifying questions. For example: "Review open PRs labeled `needs-review`, leave inline comments on any issues, and post a summary in the `#eng-reviews` Slack channel."414 When writing prompts for scheduled tasks, be explicit about what success looks like and what to do with results. The task runs autonomously, so it can't ask clarifying questions. For example: "Review open PRs labeled `needs-review`, leave inline comments on any issues, and post a summary in the `#eng-reviews` Slack channel."

costs.md +1 −1

Details

63 63 

64Press `d` or `w` to switch between the last 24 hours and the last 7 days. The figures are approximate and computed from local session history on this machine, so usage from other devices or claude.ai is not included.64Press `d` or `w` to switch between the last 24 hours and the last 7 days. The figures are approximate and computed from local session history on this machine, so usage from other devices or claude.ai is not included.

65 65 

66In the [VS Code extension](/docs/en/vs-code#check-account-and-usage), the attribution shares and behavior flags appear in the Account & usage dialog with a Day and Week toggle, without the Loops rows. Requires Claude Code v2.1.174 or later.66In the [VS Code extension](/docs/en/vs-code#check-account-and-usage), the attribution shares and behavior flags appear in the Account & usage dialog with a Day and Week toggle, without the Loops rows.

67 67 

68#### Check your usage-credits spend68#### Check your usage-credits spend

69 69 

desktop.md +1 −1

Details

732| `disableAutoMode` | set to `"disable"` to remove [Auto](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) mode from the mode selector. Also accepted under `permissions`. |732| `disableAutoMode` | set to `"disable"` to remove [Auto](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) mode from the mode selector. Also accepted under `permissions`. |

733| `autoMode` | customize what the auto mode classifier trusts and blocks across your organization. See [Configure auto mode](/docs/en/auto-mode-config). |733| `autoMode` | customize what the auto mode classifier trusts and blocks across your organization. See [Configure auto mode](/docs/en/auto-mode-config). |

734| `browserExternalPageTools` | set to `"disabled"` to prevent Claude from using tools to read or act on external pages in the [Browser pane](#browse-external-sites). Users can still navigate to external sites themselves, and local dev server previews are unaffected. |734| `browserExternalPageTools` | set to `"disabled"` to prevent Claude from using tools to read or act on external pages in the [Browser pane](#browse-external-sites). Users can still navigate to external sites themselves, and local dev server previews are unaffected. |

735| `disableMobileSimulatorTools` | set to `true` to block Claude's tools for controlling and capturing devices in the [iOS Simulator pane](/docs/en/desktop-ios-simulator#turn-off-simulator-access). The pane stays usable for the user's own taps; only Claude's access is removed. |735| `disableMobileSimulatorTools` | set to `true` to block Claude's tools for controlling and capturing devices in the [iOS Simulator pane](/docs/en/desktop-ios-simulator#turn-off-simulator-access). The pane stays usable for the user's own taps; only Claude's access is removed. The value must be the JSON boolean `true`; the string `"true"` is ignored. |

736| `disableBrowserExternalNavigation` | set to `true` to turn off external browsing in the [Browser pane](#browse-external-sites) entirely. Neither users nor Claude can navigate to external sites, and localhost dev server previews are unaffected. The value must be the JSON boolean `true`; the string `"true"` is ignored. |736| `disableBrowserExternalNavigation` | set to `true` to turn off external browsing in the [Browser pane](#browse-external-sites) entirely. Neither users nor Claude can navigate to external sites, and localhost dev server previews are unaffected. The value must be the JSON boolean `true`; the string `"true"` is ignored. |

737| `sshConfigs` | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) that appear in the environment dropdown. Users cannot edit or delete managed connections. |737| `sshConfigs` | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) that appear in the environment dropdown. Users cannot edit or delete managed connections. |

738| `sshHostAllowlist` | restrict [SSH sessions](#restrict-which-ssh-hosts-users-can-connect-to) to hosts whose resolved hostname matches one of these patterns. An empty array disables SSH sessions. Read from managed settings only. |738| `sshHostAllowlist` | restrict [SSH sessions](#restrict-which-ssh-hosts-users-can-connect-to) to hosts whose resolved hostname matches one of these patterns. An empty array disables SSH sessions. Read from managed settings only. |

errors.md +3 −4

Details

1007 1007 

1008```text theme={null}1008```text theme={null}

1009OAuth token revoked · Please run /login1009OAuth token revoked · Please run /login

1010OAuth token has expired · Please run /login1010Please run /login · API Error: 401 OAuth token has expired ...

1011API Error: 401 ... authentication_error

1012```1011```

1013 1012 

1014**What to do:**1013**What to do:**


1050Failed to authenticate: OAuth session expired and could not be refreshed1049Failed to authenticate: OAuth session expired and could not be refreshed

1051```1050```

1052 1051 

1053This is not the same state as [OAuth token revoked or expired](#oauth-token-revoked-or-expired). Those messages report a 401 the API returned. Claude Code itself produces `Login expired` for a login it already failed to renew, so it sends no request. When the renewal fails because the account itself is suspended rather than the login being stale, Claude Code shows [Your account is on hold](#your-account-is-on-hold) instead.1052This is not the same state as [OAuth token revoked or expired](#oauth-token-revoked-or-expired). Those messages report a rejection the API returned. Claude Code itself produces `Login expired` for a login it already failed to renew, so it sends no request. When the renewal fails because the account itself is suspended rather than the login being stale, Claude Code shows [Your account is on hold](#your-account-is-on-hold) instead.

1054 1053 

1055Sessions authenticated with an API key, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/en/env-vars), or a third-party provider don't use the saved login and never see this message.1054Sessions authenticated with an API key, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/en/env-vars), or a third-party provider don't use the saved login and never see this message.

1056 1055 


1646Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.1645Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.

1647```1646```

1648 1647 

1649When the limit you exceeded is a compaction window smaller than the model's context window, such as the 200K boundary on 1M-context models, the warning reads differently. Requests still succeed past a compaction window; run the named command to bring usage back under it.1648When the limit you exceeded is a compaction window, such as the 200K boundary on 1M-context models, the warning reads differently. A compaction window can sit below the model's context window, so requests past it can still succeed.

1650 1649 

1651```text theme={null}1650```text theme={null}

1652Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.1651Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.

hooks.md +2 −2

Details

1734| `status` | string | `"completed"` | `"completed"` for foreground subagents, `"async_launched"` for background subagents. As of v2.1.198, subagents run in the background by default, so an omitted `run_in_background` also produces `"async_launched"` |1734| `status` | string | `"completed"` | `"completed"` for foreground subagents, `"async_launched"` for background subagents. As of v2.1.198, subagents run in the background by default, so an omitted `run_in_background` also produces `"async_launched"` |

1735| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identifier for the subagent run |1735| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identifier for the subagent run |

1736| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | The subagent's final text blocks |1736| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | The subagent's final text blocks |

1737| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model the subagent started on, which may differ from the requested model. Requires Claude Code v2.1.174 or later |1737| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model the subagent started on, which may differ from the requested model |

1738| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Models used in order, with consecutive repeats collapsed; set only when the model was swapped mid-run. Requires Claude Code v2.1.212 or later |1738| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Models used in order, with consecutive repeats collapsed; set only when the model was swapped mid-run. Requires Claude Code v2.1.212 or later |

1739| `totalTokens` | number | `12450` | Token count from the subagent's final API request: input, output, and cache tokens combined. This isn't a total across the whole run |1739| `totalTokens` | number | `12450` | Token count from the subagent's final API request: input, output, and cache tokens combined. This isn't a total across the whole run |

1740| `totalDurationMs` | number | `48211` | Wall-clock duration of the subagent run |1740| `totalDurationMs` | number | `48211` | Wall-clock duration of the subagent run |


1743 1743 

1744For background subagents, the tool returns when the task moves to the background, so `tool_response` carries no usage fields: a background launch returns immediately, and a foreground task that Claude Code backgrounds mid-run returns at that transition. It has `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, and `resolvedModel`.1744For background subagents, the tool returns when the task moves to the background, so `tool_response` carries no usage fields: a background launch returns immediately, and a foreground task that Claude Code backgrounds mid-run returns at that transition. It has `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, and `resolvedModel`.

1745 1745 

1746On a `completed` response, `resolvedModel` names the model the subagent started on, which can differ from the `model` value in `tool_input`, such as when `availableModels` or another override applies. It requires Claude Code v2.1.174 or later. On an `async_launched` response, `resolvedModel` names the model in use when the agent moved to the background, so a swap that happened before backgrounding is reflected there. `modelsUsed` and the backgrounding-time `resolvedModel` behavior require Claude Code v2.1.212 or later.1746On a `completed` response, `resolvedModel` names the model the subagent started on, which can differ from the `model` value in `tool_input`, such as when `availableModels` or another override applies. On an `async_launched` response, `resolvedModel` names the model in use when the agent moved to the background, so a swap that happened before backgrounding is reflected there. `modelsUsed` and the backgrounding-time `resolvedModel` behavior require Claude Code v2.1.212 or later.

1747 1747 

1748<a id="askuserquestion" />1748<a id="askuserquestion" />

1749 1749 

Details

175 175 

176Built-in commands also guide you through setup:176Built-in commands also guide you through setup:

177 177 

178* `/init` walks you through creating a CLAUDE.md for your project178* `/init` generates a starter CLAUDE.md for your project

179* `/doctor` runs a setup checkup that diagnoses installation and configuration issues and can fix them179* `/doctor` runs a setup checkup that diagnoses installation and configuration issues and can fix them

180 180 

181### It's a conversation181### It's a conversation

jetbrains.md +3 −3

Details

86#### General settings86#### General settings

87 87 

88* **Claude command**: specify a custom command to run Claude, for example `claude`, `/usr/local/bin/claude`, or `npx @anthropic-ai/claude-code`88* **Claude command**: specify a custom command to run Claude, for example `claude`, `/usr/local/bin/claude`, or `npx @anthropic-ai/claude-code`

89* **Suppress notification for Claude command not found**: skip notifications about not finding the Claude command89* **Suppress notification for when Claude Command is not found**: skip notifications about not finding the Claude command

90* **Enable using Option+Enter for multi-line prompts**: on macOS only. When enabled, Option+Enter inserts new lines in Claude Code prompts. Disable if the Option key is being captured unexpectedly. Requires a terminal restart.90* **Enable using Option+Enter for multi-line prompts**: on macOS only. When enabled, Option+Enter inserts new lines in Claude Code prompts. Disable if the Option key is being captured unexpectedly. Requires a terminal restart.

91* **Enable automatic updates**: automatically check for and install plugin updates, applied on restart91* **Enable automatic updates**: automatically check for and install plugin updates, applied on restart

92 92 


212**Tools exposed to the model.** The server hosts several tools, but only one is visible to the model. The rest are internal RPC the CLI uses for its own UI, such as opening diffs and reading selections, and are filtered out before the tool list reaches Claude.212**Tools exposed to the model.** The server hosts several tools, but only one is visible to the model. The rest are internal RPC the CLI uses for its own UI, such as opening diffs and reading selections, and are filtered out before the tool list reaches Claude.

213 213 

214| Tool name (as seen by hooks) | What it does | Read-only |214| Tool name (as seen by hooks) | What it does | Read-only |

215| ---------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------- |215| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- |

216| `mcp__ide__getDiagnostics` | Returns the IDE's inspection diagnostics, the errors and warnings shown in the editor. Optionally scoped to one file. | Yes |216| `mcp__ide__getDiagnostics` | Returns the IDE's inspection diagnostics, the errors and warnings shown in the editor. Each call covers one file: the file Claude specifies, or the file in your active editor if Claude doesn't specify one. | Yes |

217 217 

218The JetBrains plugin does not expose a code-execution tool to the model.218The JetBrains plugin does not expose a code-execution tool to the model.

219 219 

Details

355 355 

356### Keep skills discoverable356### Keep skills discoverable

357 357 

358With skills spread across many directories, the list Claude chooses from can grow large. Claude picks a skill by reading every discovered skill's name and description, and only the chosen skill's full content loads into context. This section covers how to keep that list small and write descriptions that survive shortening.358With skills spread across many directories, the list Claude chooses from can grow large. Claude picks a skill by reading every discovered skill's name and description, and only the chosen skill's full content loads into context. This section covers how to keep that list small.

359 359 

360Which skills are in scope depends on where you start Claude:360Which skills are in scope depends on where you start Claude:

361 361 


363* **From the repository root**: root skills, plus skills from every subdirectory Claude touches during the session, which can accumulate into the hundreds363* **From the repository root**: root skills, plus skills from every subdirectory Claude touches during the session, which can accumulate into the hundreds

364* **After adding a sibling with [`--add-dir`](#grant-access-across-packages-or-repositories)**: that sibling's skills load too. The `additionalDirectories` setting grants file access only and does not load skills364* **After adding a sibling with [`--add-dir`](#grant-access-across-packages-or-repositories)**: that sibling's skills load too. The `additionalDirectories` setting grants file access only and does not load skills

365 365 

366Names always load, but [descriptions are shortened when there are many](/docs/en/skills#skill-descriptions-are-cut-short), which can strip the keywords Claude uses to decide whether a skill applies. Keep descriptions short and lead with words a request would contain, like "writing or modifying tests in `packages/api/`".366Names always load, but [when there are many, some skills lose their descriptions entirely](/docs/en/skills#skill-descriptions-are-cut-short), which can strip the keywords Claude uses to decide whether a skill applies. Keep descriptions short and lead with words a request would contain, like "writing or modifying tests in `packages/api/`".

367 367 

368For skills that many directories share, such as PR conventions or a deploy checklist, place them in the repository root's `.claude/skills/` so they load from any starting directory. When shared skills need their own version history or must work across repositories, package them as a [plugin](/docs/en/plugins) instead. Plugin skills use a `plugin-name:skill-name` namespace, so they never collide with per-directory skills. A platform team can version and update them in one place.368For skills that many directories share, such as PR conventions or a deploy checklist, place them in the repository root's `.claude/skills/` so they load from any starting directory. When shared skills need their own version history or must work across repositories, package them as a [plugin](/docs/en/plugins) instead. Plugin skills use a `plugin-name:skill-name` namespace, so they never collide with per-directory skills. A platform team can version and update them in one place.

369 369 

Details

203| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |203| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

204| `user_prompt` | Prompt text. Value is `<REDACTED>` unless the gate is set | `OTEL_LOG_USER_PROMPTS` |204| `user_prompt` | Prompt text. Value is `<REDACTED>` unless the gate is set | `OTEL_LOG_USER_PROMPTS` |

205| `user_prompt_length` | Prompt length in characters | |205| `user_prompt_length` | Prompt length in characters | |

206| `interaction.sequence` | 1-based counter of interactions in this session | |206| `interaction.sequence` | 1-based counter of interactions, counted per Claude Code process rather than per session, as described for [`event.sequence`](#event-correlation-attributes) | |

207| `parent.source` | How the span got its trace parent: `env` when it parented under an inbound `TRACEPARENT`, `none` when it started its own trace. Requires Claude Code v2.1.268 or later | |207| `parent.source` | How the span got its trace parent: `env` when it parented under an inbound `TRACEPARENT`, `none` when it started its own trace. Requires Claude Code v2.1.268 or later | |

208| `interaction.duration_ms` | Wall-clock duration of the turn | |208| `interaction.duration_ms` | Wall-clock duration of the turn | |

209 209 


625| Attribute | Description |625| Attribute | Description |

626| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |626| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

627| `prompt.id` | UUID v4 identifier linking all events produced while processing a single user prompt |627| `prompt.id` | UUID v4 identifier linking all events produced while processing a single user prompt |

628| `event.sequence` | 0-based counter for ordering events, counted per Claude Code process rather than per session |

628| `message.uuid` | UUID of the message as persisted in the session transcript, the `~/.claude/projects/*/*.jsonl` files. Present on `assistant_response`, and on `user_prompt` except for command dispatches, which can produce zero or many messages. On `assistant_response`, this is the response's final transcript entry, which the next turn's `parentUuid` chains from. Requires Claude Code v2.1.214 or later |629| `message.uuid` | UUID of the message as persisted in the session transcript, the `~/.claude/projects/*/*.jsonl` files. Present on `assistant_response`, and on `user_prompt` except for command dispatches, which can produce zero or many messages. On `assistant_response`, this is the response's final transcript entry, which the next turn's `parentUuid` chains from. Requires Claude Code v2.1.214 or later |

629| `client_request_id` | Client-generated UUID sent as the `x-client-request-id` request header. Present on `api_request` and `api_error` on first-party API connections; absent on third-party provider backends and when the request was retried through the non-streaming fallback. Pairs a request with its response and remains available for failures such as timeouts that never produced a server `request_id`. Matches the same attribute on the `llm_request` trace span. Requires Claude Code v2.1.214 or later |630| `client_request_id` | Client-generated UUID sent as the `x-client-request-id` request header. Present on `api_request` and `api_error` on first-party API connections; absent on third-party provider backends and when the request was retried through the non-streaming fallback. Pairs a request with its response and remains available for failures such as timeouts that never produced a server `request_id`. Matches the same attribute on the `llm_request` trace span. Requires Claude Code v2.1.214 or later |

630 631 

631To trace all activity triggered by a single prompt, filter your events by a specific `prompt.id` value. This returns the user\_prompt event, any api\_request events, and any tool\_result events that occurred while processing that prompt.632To trace all activity triggered by a single prompt, filter your events by a specific `prompt.id` value. This returns the user\_prompt event, any api\_request events, and any tool\_result events that occurred while processing that prompt.

632 633 

634`event.sequence` starts at 0 each time a Claude Code process starts and counts up for the life of that process. It keeps counting across `/clear`, which assigns a new `session.id`. If you [resume a session without forking](/docs/en/how-claude-code-works#resume-or-fork-sessions), the session keeps its `session.id` but takes its `event.sequence` values from the process that resumed it, so within one session a later event can carry a lower value than an earlier one, or repeat one. To order a session's events, sort by `event.timestamp` and use `event.sequence` to order events that share a timestamp.

635 

633For message-level reconstruction, each event class carries a key that matches a field in the session transcript. The transcript entry format is [internal to Claude Code](/docs/en/sessions#where-transcripts-are-stored) and changes between versions, so a pipeline that joins on these fields can break on any release; treat the joins as version-specific rather than a stable contract:636For message-level reconstruction, each event class carries a key that matches a field in the session transcript. The transcript entry format is [internal to Claude Code](/docs/en/sessions#where-transcripts-are-stored) and changes between versions, so a pipeline that joins on these fields can break on any release; treat the joins as version-specific rather than a stable contract:

634 637 

635* `message.uuid` on `user_prompt` and `assistant_response`638* `message.uuid` on `user_prompt` and `assistant_response`


647* All [standard attributes](#standard-attributes)650* All [standard attributes](#standard-attributes)

648* `event.name`: `"user_prompt"`651* `event.name`: `"user_prompt"`

649* `event.timestamp`: ISO 8601 timestamp652* `event.timestamp`: ISO 8601 timestamp

650* `event.sequence`: monotonically increasing counter for ordering events within a session653* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

651* `prompt_length`: Length of the prompt654* `prompt_length`: Length of the prompt

652* `prompt`: Prompt content. Redacted by default. Set `OTEL_LOG_USER_PROMPTS=1` to include it655* `prompt`: Prompt content. Redacted by default. Set `OTEL_LOG_USER_PROMPTS=1` to include it

653* `message.uuid`: UUID of the resulting user message, matching the persisted transcript entry. Absent on command dispatches, which can produce zero or many messages. Requires Claude Code v2.1.214 or later656* `message.uuid`: UUID of the resulting user message, matching the persisted transcript entry. Absent on command dispatches, which can produce zero or many messages. Requires Claude Code v2.1.214 or later


665* All [standard attributes](#standard-attributes)668* All [standard attributes](#standard-attributes)

666* `event.name`: `"assistant_response"`669* `event.name`: `"assistant_response"`

667* `event.timestamp`: ISO 8601 timestamp670* `event.timestamp`: ISO 8601 timestamp

668* `event.sequence`: monotonically increasing counter for ordering events within a session671* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

669* `response_length`: Length of the response text in characters672* `response_length`: Length of the response text in characters

670* `response`: Response text, truncated at the content limit (60 KB by default). Redacted to `<REDACTED>` by default. Set `OTEL_LOG_ASSISTANT_RESPONSES=1` to include it. When `OTEL_LOG_ASSISTANT_RESPONSES` is unset, `OTEL_LOG_USER_PROMPTS` controls it instead, so set `OTEL_LOG_ASSISTANT_RESPONSES=0` to keep responses redacted while prompt logging is on673* `response`: Response text, truncated at the content limit (60 KB by default). Redacted to `<REDACTED>` by default. Set `OTEL_LOG_ASSISTANT_RESPONSES=1` to include it. When `OTEL_LOG_ASSISTANT_RESPONSES` is unset, `OTEL_LOG_USER_PROMPTS` controls it instead, so set `OTEL_LOG_ASSISTANT_RESPONSES=0` to keep responses redacted while prompt logging is on

671* `model`: Model identifier (for example, "claude-sonnet-5")674* `model`: Model identifier (for example, "claude-sonnet-5")


684* All [standard attributes](#standard-attributes)687* All [standard attributes](#standard-attributes)

685* `event.name`: `"tool_result"`688* `event.name`: `"tool_result"`

686* `event.timestamp`: ISO 8601 timestamp689* `event.timestamp`: ISO 8601 timestamp

687* `event.sequence`: monotonically increasing counter for ordering events within a session690* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

688* `tool_name`: Name of the tool691* `tool_name`: Name of the tool

689* `tool_use_id`: Unique identifier for this tool invocation. Matches the `tool_use_id` passed to hooks, allowing correlation between OTel events and hook-captured data.692* `tool_use_id`: Unique identifier for this tool invocation. Matches the `tool_use_id` passed to hooks, allowing correlation between OTel events and hook-captured data.

690* `success`: `"true"` or `"false"`693* `success`: `"true"` or `"false"`


716* All [standard attributes](#standard-attributes)719* All [standard attributes](#standard-attributes)

717* `event.name`: `"api_request"`720* `event.name`: `"api_request"`

718* `event.timestamp`: ISO 8601 timestamp721* `event.timestamp`: ISO 8601 timestamp

719* `event.sequence`: monotonically increasing counter for ordering events within a session722* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

720* `model`: Model used (for example, "claude-sonnet-5")723* `model`: Model used (for example, "claude-sonnet-5")

721* `cost_usd`: Estimated cost in USD724* `cost_usd`: Estimated cost in USD

722* `cost_usd_micros`: Estimated cost in millionths of a US dollar, emitted as an integer725* `cost_usd_micros`: Estimated cost in millionths of a US dollar, emitted as an integer


743* All [standard attributes](#standard-attributes)746* All [standard attributes](#standard-attributes)

744* `event.name`: `"api_error"`747* `event.name`: `"api_error"`

745* `event.timestamp`: ISO 8601 timestamp748* `event.timestamp`: ISO 8601 timestamp

746* `event.sequence`: monotonically increasing counter for ordering events within a session749* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

747* `model`: Model used (for example, "claude-sonnet-5")750* `model`: Model used (for example, "claude-sonnet-5")

748* `error`: Error message751* `error`: Error message

749* `status_code`: HTTP status code as a number. Absent for non-HTTP errors such as connection failures.752* `status_code`: HTTP status code as a number. Absent for non-HTTP errors such as connection failures.


767* All [standard attributes](#standard-attributes)770* All [standard attributes](#standard-attributes)

768* `event.name`: `"api_refusal"`771* `event.name`: `"api_refusal"`

769* `event.timestamp`: ISO 8601 timestamp772* `event.timestamp`: ISO 8601 timestamp

770* `event.sequence`: monotonically increasing counter for ordering events within a session773* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

771* `model`: Model identifier from the request774* `model`: Model identifier from the request

772* `request_id`: Anthropic API request ID from the response's `request-id` header, such as `"req_011..."`. Present only when the API returns one.775* `request_id`: Anthropic API request ID from the response's `request-id` header, such as `"req_011..."`. Present only when the API returns one.

773* `query_source`: Subsystem that issued the request, such as `"repl_main_thread"`, `"compact"`, or a subagent name. See [`api_request`](#api-request-event) for definitions.776* `query_source`: Subsystem that issued the request, such as `"repl_main_thread"`, `"compact"`, or a subagent name. See [`api_request`](#api-request-event) for definitions.


791* All [standard attributes](#standard-attributes)794* All [standard attributes](#standard-attributes)

792* `event.name`: `"api_request_body"`795* `event.name`: `"api_request_body"`

793* `event.timestamp`: ISO 8601 timestamp796* `event.timestamp`: ISO 8601 timestamp

794* `event.sequence`: monotonically increasing counter for ordering events within a session797* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

795* `body`: JSON-serialized Messages API request parameters, such as the system prompt, messages, and tools, truncated at the content limit (60 KB by default). Extended-thinking content in prior assistant turns is redacted. Emitted only in inline mode (`OTEL_LOG_RAW_API_BODIES=1`).798* `body`: JSON-serialized Messages API request parameters, such as the system prompt, messages, and tools, truncated at the content limit (60 KB by default). Extended-thinking content in prior assistant turns is redacted. Emitted only in inline mode (`OTEL_LOG_RAW_API_BODIES=1`).

796* `body_ref`: Absolute path to a `<dir>/<uuid>.request.json` file containing the untruncated body. Emitted only in file mode (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).799* `body_ref`: Absolute path to a `<dir>/<uuid>.request.json` file containing the untruncated body. Emitted only in file mode (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

797* `body_length`: Untruncated body length. UTF-8 bytes when `OTEL_LOG_RAW_API_BODIES=file:<dir>`, or UTF-16 code units when `=1`800* `body_length`: Untruncated body length. UTF-8 bytes when `OTEL_LOG_RAW_API_BODIES=file:<dir>`, or UTF-16 code units when `=1`


810* All [standard attributes](#standard-attributes)813* All [standard attributes](#standard-attributes)

811* `event.name`: `"api_response_body"`814* `event.name`: `"api_response_body"`

812* `event.timestamp`: ISO 8601 timestamp815* `event.timestamp`: ISO 8601 timestamp

813* `event.sequence`: monotonically increasing counter for ordering events within a session816* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

814* `body`: JSON-serialized Messages API response, including the id, content blocks, usage, and stop reason, truncated at the content limit (60 KB by default). Extended-thinking content is redacted. Emitted only in inline mode (`OTEL_LOG_RAW_API_BODIES=1`).817* `body`: JSON-serialized Messages API response, including the id, content blocks, usage, and stop reason, truncated at the content limit (60 KB by default). Extended-thinking content is redacted. Emitted only in inline mode (`OTEL_LOG_RAW_API_BODIES=1`).

815* `body_ref`: Absolute path to a `<dir>/<request_id>.response.json` file containing the untruncated body. Emitted only in file mode (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).818* `body_ref`: Absolute path to a `<dir>/<request_id>.response.json` file containing the untruncated body. Emitted only in file mode (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

816* `body_length`: Untruncated body length. UTF-8 bytes when `OTEL_LOG_RAW_API_BODIES=file:<dir>`, or UTF-16 code units when `=1`819* `body_length`: Untruncated body length. UTF-8 bytes when `OTEL_LOG_RAW_API_BODIES=file:<dir>`, or UTF-16 code units when `=1`


830* All [standard attributes](#standard-attributes)833* All [standard attributes](#standard-attributes)

831* `event.name`: `"tool_decision"`834* `event.name`: `"tool_decision"`

832* `event.timestamp`: ISO 8601 timestamp835* `event.timestamp`: ISO 8601 timestamp

833* `event.sequence`: monotonically increasing counter for ordering events within a session836* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

834* `tool_name`: Name of the tool (for example, "Read", "Edit", "Write", "NotebookEdit")837* `tool_name`: Name of the tool (for example, "Read", "Edit", "Write", "NotebookEdit")

835* `tool_use_id`: Unique identifier for this tool invocation. Matches the `tool_use_id` passed to hooks, allowing correlation between OTel events and hook-captured data.838* `tool_use_id`: Unique identifier for this tool invocation. Matches the `tool_use_id` passed to hooks, allowing correlation between OTel events and hook-captured data.

836* `decision`: Either `"accept"` or `"reject"`839* `decision`: Either `"accept"` or `"reject"`


863* All [standard attributes](#standard-attributes)866* All [standard attributes](#standard-attributes)

864* `event.name`: `"permission_mode_changed"`867* `event.name`: `"permission_mode_changed"`

865* `event.timestamp`: ISO 8601 timestamp868* `event.timestamp`: ISO 8601 timestamp

866* `event.sequence`: monotonically increasing counter for ordering events within a session869* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

867* `from_mode`: The previous permission mode, for example `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, or `"bypassPermissions"`870* `from_mode`: The previous permission mode, for example `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, or `"bypassPermissions"`

868* `to_mode`: The new permission mode871* `to_mode`: The new permission mode

869* `trigger`: What caused the change. One of `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, or `"auto_opt_in"`. Absent when the transition originates from the SDK or bridge872* `trigger`: What caused the change. One of `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, or `"auto_opt_in"`. Absent when the transition originates from the SDK or bridge


879* All [standard attributes](#standard-attributes)882* All [standard attributes](#standard-attributes)

880* `event.name`: `"auth"`883* `event.name`: `"auth"`

881* `event.timestamp`: ISO 8601 timestamp884* `event.timestamp`: ISO 8601 timestamp

882* `event.sequence`: monotonically increasing counter for ordering events within a session885* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

883* `action`: `"login"` or `"logout"`886* `action`: `"login"` or `"logout"`

884* `success`: `"true"` or `"false"`887* `success`: `"true"` or `"false"`

885* `auth_method`: Authentication method, such as `"oauth"`888* `auth_method`: Authentication method, such as `"oauth"`


897* All [standard attributes](#standard-attributes)900* All [standard attributes](#standard-attributes)

898* `event.name`: `"mcp_server_connection"`901* `event.name`: `"mcp_server_connection"`

899* `event.timestamp`: ISO 8601 timestamp902* `event.timestamp`: ISO 8601 timestamp

900* `event.sequence`: monotonically increasing counter for ordering events within a session903* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

901* `status`: `"connected"`, `"failed"`, or `"disconnected"`904* `status`: `"connected"`, `"failed"`, or `"disconnected"`

902* `transport_type`: Server transport, such as `"stdio"`, `"sse"`, or `"http"`905* `transport_type`: Server transport, such as `"stdio"`, `"sse"`, or `"http"`

903* `server_scope`: Scope the server is configured at, such as `"user"`, `"project"`, or `"local"`906* `server_scope`: Scope the server is configured at, such as `"user"`, `"project"`, or `"local"`


920* All [standard attributes](#standard-attributes)923* All [standard attributes](#standard-attributes)

921* `event.name`: `"internal_error"`924* `event.name`: `"internal_error"`

922* `event.timestamp`: ISO 8601 timestamp925* `event.timestamp`: ISO 8601 timestamp

923* `event.sequence`: monotonically increasing counter for ordering events within a session926* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

924* `error_name`: Error class name, such as `"TypeError"` or `"SyntaxError"`927* `error_name`: Error class name, such as `"TypeError"` or `"SyntaxError"`

925* `error_code`: Node.js errno code such as `"ENOENT"` when present on the error928* `error_code`: Node.js errno code such as `"ENOENT"` when present on the error

926 929 


935* All [standard attributes](#standard-attributes)938* All [standard attributes](#standard-attributes)

936* `event.name`: `"plugin_installed"`939* `event.name`: `"plugin_installed"`

937* `event.timestamp`: ISO 8601 timestamp940* `event.timestamp`: ISO 8601 timestamp

938* `event.sequence`: monotonically increasing counter for ordering events within a session941* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

939* `marketplace.is_official`: `"true"` if the marketplace is an official Anthropic marketplace, `"false"` otherwise942* `marketplace.is_official`: `"true"` if the marketplace is an official Anthropic marketplace, `"false"` otherwise

940* `install.trigger`: `"cli"` or `"ui"`943* `install.trigger`: `"cli"` or `"ui"`

941* `plugin.name`: Name of the installed plugin. For third-party marketplaces this is included only when `OTEL_LOG_TOOL_DETAILS=1`944* `plugin.name`: Name of the installed plugin. For third-party marketplaces this is included only when `OTEL_LOG_TOOL_DETAILS=1`


953* All [standard attributes](#standard-attributes)956* All [standard attributes](#standard-attributes)

954* `event.name`: `"plugin_loaded"`957* `event.name`: `"plugin_loaded"`

955* `event.timestamp`: ISO 8601 timestamp958* `event.timestamp`: ISO 8601 timestamp

956* `event.sequence`: monotonically increasing counter for ordering events within a session959* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

957* `plugin.name`: name of the plugin. For plugins outside the official marketplace and built-in bundle the value is `"third-party"` unless `OTEL_LOG_TOOL_DETAILS=1`960* `plugin.name`: name of the plugin. For plugins outside the official marketplace and built-in bundle the value is `"third-party"` unless `OTEL_LOG_TOOL_DETAILS=1`

958* `marketplace.name`: marketplace the plugin was installed from, when known. Redacted to `"third-party"` under the same condition as `plugin.name`961* `marketplace.name`: marketplace the plugin was installed from, when known. Redacted to `"third-party"` under the same condition as `plugin.name`

959* `plugin.version`: version from the plugin manifest. Included only when the name is not redacted and the manifest declares a version962* `plugin.version`: version from the plugin manifest. Included only when the name is not redacted and the manifest declares a version


979* All [standard attributes](#standard-attributes)982* All [standard attributes](#standard-attributes)

980* `event.name`: `"skill_activated"`983* `event.name`: `"skill_activated"`

981* `event.timestamp`: ISO 8601 timestamp984* `event.timestamp`: ISO 8601 timestamp

982* `event.sequence`: monotonically increasing counter for ordering events within a session985* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

983* `skill.name`: Name of the skill. For user-defined and third-party plugin skills the value is the placeholder `"custom_skill"` unless `OTEL_LOG_TOOL_DETAILS=1`986* `skill.name`: Name of the skill. For user-defined and third-party plugin skills the value is the placeholder `"custom_skill"` unless `OTEL_LOG_TOOL_DETAILS=1`

984* `invocation_trigger`: How the skill was triggered (`"user-slash"`, `"claude-proactive"`, or `"nested-skill"`)987* `invocation_trigger`: How the skill was triggered (`"user-slash"`, `"claude-proactive"`, or `"nested-skill"`)

985* `skill.source`: Where the skill was loaded from (for example, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)988* `skill.source`: Where the skill was loaded from (for example, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)


998* All [standard attributes](#standard-attributes)1001* All [standard attributes](#standard-attributes)

999* `event.name`: `"at_mention"`1002* `event.name`: `"at_mention"`

1000* `event.timestamp`: ISO 8601 timestamp1003* `event.timestamp`: ISO 8601 timestamp

1001* `event.sequence`: monotonically increasing counter for ordering events within a session1004* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1002* `mention_type`: Type of mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). The `"peer"` value means you mentioned [one of your other Claude Code sessions](/docs/en/cross-session-messaging). Requires Claude Code v2.1.232 or later1005* `mention_type`: Type of mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). The `"peer"` value means you mentioned [one of your other Claude Code sessions](/docs/en/cross-session-messaging). Requires Claude Code v2.1.232 or later

1003* `success`: Whether the mention resolved successfully (`"true"` or `"false"`)1006* `success`: Whether the mention resolved successfully (`"true"` or `"false"`)

1004 1007 


1013* All [standard attributes](#standard-attributes)1016* All [standard attributes](#standard-attributes)

1014* `event.name`: `"api_retries_exhausted"`1017* `event.name`: `"api_retries_exhausted"`

1015* `event.timestamp`: ISO 8601 timestamp1018* `event.timestamp`: ISO 8601 timestamp

1016* `event.sequence`: monotonically increasing counter for ordering events within a session1019* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1017* `model`: Model used1020* `model`: Model used

1018* `error`: Final error message1021* `error`: Final error message

1019* `status_code`: HTTP status code as a number. Absent for non-HTTP errors.1022* `status_code`: HTTP status code as a number. Absent for non-HTTP errors.


1032* All [standard attributes](#standard-attributes)1035* All [standard attributes](#standard-attributes)

1033* `event.name`: `"hook_registered"`1036* `event.name`: `"hook_registered"`

1034* `event.timestamp`: ISO 8601 timestamp1037* `event.timestamp`: ISO 8601 timestamp

1035* `event.sequence`: monotonically increasing counter for ordering events within a session1038* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1036* `hook_event`: hook event type, such as `"PreToolUse"` or `"PostToolUse"`1039* `hook_event`: hook event type, such as `"PreToolUse"` or `"PostToolUse"`

1037* `hook_type`: hook implementation type: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, or `"agent"`1040* `hook_type`: hook implementation type: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, or `"agent"`

1038* `hook_source`: where the hook is defined: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, or `"pluginHook"`1041* `hook_source`: where the hook is defined: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, or `"pluginHook"`


1052* All [standard attributes](#standard-attributes)1055* All [standard attributes](#standard-attributes)

1053* `event.name`: `"hook_execution_start"`1056* `event.name`: `"hook_execution_start"`

1054* `event.timestamp`: ISO 8601 timestamp1057* `event.timestamp`: ISO 8601 timestamp

1055* `event.sequence`: monotonically increasing counter for ordering events within a session1058* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1056* `hook_event`: Hook event type, such as `"PreToolUse"` or `"PostToolUse"`1059* `hook_event`: Hook event type, such as `"PreToolUse"` or `"PostToolUse"`

1057* `hook_name`: Full hook name including matcher, such as `"PreToolUse:Write"`1060* `hook_name`: Full hook name including matcher, such as `"PreToolUse:Write"`

1058* `num_hooks`: Number of matching hook commands1061* `num_hooks`: Number of matching hook commands


1072* All [standard attributes](#standard-attributes)1075* All [standard attributes](#standard-attributes)

1073* `event.name`: `"hook_execution_complete"`1076* `event.name`: `"hook_execution_complete"`

1074* `event.timestamp`: ISO 8601 timestamp1077* `event.timestamp`: ISO 8601 timestamp

1075* `event.sequence`: monotonically increasing counter for ordering events within a session1078* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1076* `hook_event`: Hook event type1079* `hook_event`: Hook event type

1077* `hook_name`: Full hook name including matcher1080* `hook_name`: Full hook name including matcher

1078* `num_hooks`: Number of matching hook commands1081* `num_hooks`: Number of matching hook commands


1097* All [standard attributes](#standard-attributes)1100* All [standard attributes](#standard-attributes)

1098* `event.name`: `"hook_plugin_metrics"`1101* `event.name`: `"hook_plugin_metrics"`

1099* `event.timestamp`: ISO 8601 timestamp1102* `event.timestamp`: ISO 8601 timestamp

1100* `event.sequence`: monotonically increasing counter for ordering events within a session1103* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1101* `plugin_id`: plugin identifier in `<name>@<marketplace>` form1104* `plugin_id`: plugin identifier in `<name>@<marketplace>` form

1102* `hook_event`: hook event type that emitted the metrics1105* `hook_event`: hook event type that emitted the metrics

1103* Up to 20 plugin-emitted metric keys. Names match `^[a-z][a-z0-9_]{0,39}$`. Values are boolean or number.1106* Up to 20 plugin-emitted metric keys. Names match `^[a-z][a-z0-9_]{0,39}$`. Values are boolean or number.


1113* All [standard attributes](#standard-attributes)1116* All [standard attributes](#standard-attributes)

1114* `event.name`: `"compaction"`1117* `event.name`: `"compaction"`

1115* `event.timestamp`: ISO 8601 timestamp1118* `event.timestamp`: ISO 8601 timestamp

1116* `event.sequence`: monotonically increasing counter for ordering events within a session1119* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1117* `trigger`: `"auto"` or `"manual"`1120* `trigger`: `"auto"` or `"manual"`

1118* `success`: `"true"` or `"false"`1121* `success`: `"true"` or `"false"`

1119* `duration_ms`: Compaction duration1122* `duration_ms`: Compaction duration


1133* All [standard attributes](#standard-attributes)1136* All [standard attributes](#standard-attributes)

1134* `event.name`: `"subagent_completed"`1137* `event.name`: `"subagent_completed"`

1135* `event.timestamp`: ISO 8601 timestamp1138* `event.timestamp`: ISO 8601 timestamp

1136* `event.sequence`: monotonically increasing counter for ordering events within a session1139* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1137* `agent_type`: The subagent type. Built-in agent names and agents from official-marketplace plugins appear verbatim; other agent names are replaced with `"custom"` unless `OTEL_LOG_TOOL_DETAILS=1` is set1140* `agent_type`: The subagent type. Built-in agent names and agents from official-marketplace plugins appear verbatim; other agent names are replaced with `"custom"` unless `OTEL_LOG_TOOL_DETAILS=1` is set

1138* `agent.source`: Where the agent definition came from: `built-in`, `plugin`, or the settings source that defined a custom agent, such as `userSettings` or `projectSettings`1141* `agent.source`: Where the agent definition came from: `built-in`, `plugin`, or the settings source that defined a custom agent, such as `userSettings` or `projectSettings`

1139* `is_built_in`: Whether the subagent is a built-in agent type1142* `is_built_in`: Whether the subagent is a built-in agent type


1157* All [standard attributes](#standard-attributes)1160* All [standard attributes](#standard-attributes)

1158* `event.name`: `"feedback_survey"`1161* `event.name`: `"feedback_survey"`

1159* `event.timestamp`: ISO 8601 timestamp1162* `event.timestamp`: ISO 8601 timestamp

1160* `event.sequence`: monotonically increasing counter for ordering events within a session1163* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1161* `event_type`: Survey lifecycle event, for example `"appeared"`, `"responded"`, or `"transcript_prompt_appeared"`1164* `event_type`: Survey lifecycle event, for example `"appeared"`, `"responded"`, or `"transcript_prompt_appeared"`

1162* `appearance_id`: Unique ID linking the events emitted for one survey instance1165* `appearance_id`: Unique ID linking the events emitted for one survey instance

1163* `survey_type`: Which survey produced the event. `"session"` is the "How is Claude doing?" rating prompt1166* `survey_type`: Which survey produced the event. `"session"` is the "How is Claude doing?" rating prompt


1179* All [standard attributes](#standard-attributes)1182* All [standard attributes](#standard-attributes)

1180* `event.name`: `"retention_sweep"`1183* `event.name`: `"retention_sweep"`

1181* `event.timestamp`: ISO 8601 timestamp1184* `event.timestamp`: ISO 8601 timestamp

1182* `event.sequence`: monotonically increasing counter for ordering events within a session1185* `event.sequence`: per-process counter for ordering events, described under [Event correlation attributes](#event-correlation-attributes)

1183* `result`: `"complete"` when the sweep ran, `"skipped"` when Claude Code paused it1186* `result`: `"complete"` when the sweep ran, `"skipped"` when Claude Code paused it

1184* `period_days`: The `cleanupPeriodDays` value from merged settings, in days, or `30` when no source sets it. On skipped events, the value the sweep would have used, computed from the settings sources Claude Code could read1187* `period_days`: The `cleanupPeriodDays` value from merged settings, in days, or `30` when no source sets it. On skipped events, the value the sweep would have used, computed from the settings sources Claude Code could read

1185* `used_default`: `"true"` when no readable settings source sets `cleanupPeriodDays`, `"false"` otherwise. On complete events, `"true"` means the 30-day default applied1188* `used_default`: `"true"` when no readable settings source sets `cleanupPeriodDays`, `"false"` otherwise. On complete events, `"true"` means the 30-day default applied

permissions.md +3 −1

Details

61 61 

62A broad deny rule like `Bash(aws *)` blocks every matching call, including calls that also match a narrower allow rule like `Bash(aws s3 ls)`, so a deny rule can't carry allowlist exceptions. The same precedence applies between ask and allow: a matching ask rule prompts even when a more specific allow rule also matches the same call.62A broad deny rule like `Bash(aws *)` blocks every matching call, including calls that also match a narrower allow rule like `Bash(aws s3 ls)`, so a deny rule can't carry allowlist exceptions. The same precedence applies between ask and allow: a matching ask rule prompts even when a more specific allow rule also matches the same call.

63 63 

64Deny rules behave differently depending on whether they name a tool or scope a pattern within one. A bare tool name like `Bash` removes the tool from Claude's context entirely, so Claude never sees it. Bare-name removal applies to every tool except [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior): a deny rule can't remove it while any other tool remains, and an ask rule never prompts for it. A scoped rule like `Bash(rm *)` leaves the tool available and blocks matching calls when Claude attempts them.64Deny rules behave differently depending on whether they name a tool or scope a pattern within one. A bare tool name like `Bash` removes the tool from Claude's context entirely, so Claude never sees it. If you add such a rule mid-session, Claude can't call the tool from its next tool call on; [Denying an entire tool](/docs/en/prompt-caching#denying-an-entire-tool) covers what happens to a definition Claude has already seen. A scoped rule like `Bash(rm *)` leaves the tool available and blocks matching calls when Claude attempts them.

65 

66Bare-name removal applies to every tool except [`EndConversation`](/docs/en/tools-reference#endconversation-tool-behavior): a deny rule can't remove it while any other tool remains, and an ask rule never prompts for it.

65 67 

66<Note>68<Note>

67 Permission rules are enforced by Claude Code, not by the model. Instructions in your prompt or `CLAUDE.md` shape what Claude tries to do, but they don't change what Claude Code allows. To grant or revoke access, use `/permissions`, the rules described here, a [permission mode](/docs/en/permission-modes), or a [PreToolUse hook](#extend-permissions-with-hooks).69 Permission rules are enforced by Claude Code, not by the model. Instructions in your prompt or `CLAUDE.md` shape what Claude tries to do, but they don't change what Claude Code allows. To grant or revoke access, use `/permissions`, the rules described here, a [permission mode](/docs/en/permission-modes), or a [PreToolUse hook](#extend-permissions-with-hooks).

Details

157 157 

158### Denying an entire tool158### Denying an entire tool

159 159 

160Adding a bare tool name like `Bash` or `WebFetch` as a [deny rule](/docs/en/permissions#manage-permissions) removes that tool from Claude's context entirely. Claude Code loads built-in tool definitions into the system prompt layer, so adding or removing one of these rules mid-session invalidates the cache. Claude Code applies the change on the next request, whether you add the rule through `/permissions` or by [editing a settings file directly](/docs/en/settings#when-edits-take-effect). That includes a rule you add through `/permissions` in the middle of a turn.160If you add a bare tool name like `Bash` or `WebFetch` as a [deny rule](/docs/en/permissions#manage-permissions), Claude can't call that tool from your next request on, whether you add the rule through `/permissions` or by [editing a settings file directly](/docs/en/settings#when-edits-take-effect). That includes a rule you add through `/permissions` in the middle of a turn.

161 161 

162Only a deny rule that matches in the tool-name position has this effect: a bare tool name, the equivalent `Bash(*)` form, or a [tool-name glob](/docs/en/permissions#tool-name-wildcards) like `"*"`. A glob that matches only MCP tools, such as `"mcp__*"`, removes those tools the same way but leaves the cache intact when the matched tools are [deferred](#connecting-or-disconnecting-an-mcp-server), the default, since deferred definitions were never in the cached prefix. Scoped deny rules like `Bash(rm *)`, and all allow and ask rules, don't change which tools Claude sees. Claude Code checks them when Claude attempts a call, leaving the prefix intact.162When [tool search](/docs/en/mcp#scale-with-mcp-tool-search) is active, which is the default on supported models, the request's tool definitions don't change and the cached prefix survives. When tool search is unavailable or disabled, Claude Code removes the definition from the next request, which invalidates the cache, and so does removing the rule later.

163 

164Only a deny rule that matches in the tool-name position blocks a tool this way: a bare tool name, the equivalent `Bash(*)` form, or a [tool-name glob](/docs/en/permissions#tool-name-wildcards) like `"*"`. A glob that matches only MCP tools, such as `"mcp__*"`, blocks those tools the same way. Scoped deny rules like `Bash(rm *)`, and all allow and ask rules, don't change which tools Claude sees. Claude Code checks them when Claude attempts a call, leaving the prefix intact.

163 165 

164### Compacting the conversation166### Compacting the conversation

165 167 

Details

126 126 

127### Check connection status127### Check connection status

128 128 

129In an interactive terminal session, a `/rc active` indicator shows while the connection is up, and is hidden if the terminal is too narrow to fit it. With [fullscreen rendering](/docs/en/fullscreen) it sits at the end of the working-directory line in the startup header, and without it, in the footer below the input box.129In an interactive session, while Remote Control is connected, the terminal shows an `/rc active` indicator that links to the session on claude.ai. The indicator is hidden when the terminal is too narrow to fit it. To see the session URL and a QR code for [connecting from another device](#connect-from-another-device), run `/remote-control` again to open the status panel. The panel also lets you disconnect Remote Control while your local session keeps running.

130 130 

131The indicator text is a link to the session on claude.ai. Run `/remote-control` again to open a status panel with the session URL and a QR code for [connecting from another device](#connect-from-another-device). When the indicator is in the footer, you can also open the panel by selecting the indicator with the down arrow key and pressing Enter. The panel also offers a disconnect option, which turns Remote Control off while your local session keeps running in the terminal.131<span id="session-ended-elsewhere" />If the connection fails in an interactive session, the indicator changes to show the failure, and Claude Code shows the reason in a notification and adds it to the conversation. Run `/remote-control` to reconnect, unless the reason says the session changed somewhere else:

132 132 

133If the connection fails, Claude Code shows a notification with the failure reason, adds a warning line with the reason to the conversation, and switches the indicator to a failure state that stays in place. To reconnect, run `/remote-control`, unless the [reason says the session was taken over or ended elsewhere, or that the server can't find it](#session-ended-elsewhere).133* **Another connection took over this session**: another device or Claude Code session has it now. Run `/remote-control` only if you want to take it back.

134 134* **This session was ended or archived from another device or app**: run `/remote-control` only if you want the session back. Claude Code reopens an archived session.

135<span id="session-ended-elsewhere" />Read the reason before you reconnect. When the session was taken over or ended from another device, app, or Claude Code session, or the server can't find it, the reason says which, and Claude Code leaves out its usual advice to run `/remote-control`:135* **The server no longer reports this session**: it may have been deleted from another device or app.

136 

137* **Another device or Claude Code session took the session over**: run `/remote-control` only if you want to take it back from that device.

138* **You ended or archived the session from another device or app**: run `/remote-control` only if you want it back; Claude Code reopens an archived session.

139* **The server can't find the session**: it may have been deleted from another device or app.

140 136 

141### Session URL reminders137### Session URL reminders

142 138 


1643. The last meaningful message in existing conversation history1603. The last meaningful message in existing conversation history

1654. An auto-generated name like `myhost-graceful-unicorn`, where `myhost` is your machine's hostname or the prefix you set with `--remote-control-session-name-prefix`1614. An auto-generated name like `myhost-graceful-unicorn`, where `myhost` is your machine's hostname or the prefix you set with `--remote-control-session-name-prefix`

166 162 

167If you didn't set an explicit name, Claude Code updates the title to reflect your prompt once you send one. Claude Code matches auto-generated titles to the language of your conversation, or to the [`language`](/docs/en/settings-reference#language) setting if one is configured; the language matching requires Claude Code v2.1.176 or later.163If you didn't set an explicit name, Claude Code updates the title to reflect your prompt once you send one. Claude Code matches auto-generated titles to the language of your conversation, or to the [`language`](/docs/en/settings-reference#language) setting if one is configured.

168 164 

169When you rename a session from claude.ai or the Claude app, Claude Code also updates the local title shown in `claude --resume`. Claude Code applies the same rename to the session name shown on the prompt bar, and in the `claude agents` listing when the session [runs in the background](/docs/en/agent-view). Before v2.1.221, renaming from the session list at claude.ai or in the Claude app updated only the title, and the CLI kept its previous session name; `/rename`, which runs in the CLI itself, set the name on any version.165When you rename a session from claude.ai or the Claude app, Claude Code also updates the local title shown in `claude --resume`. Claude Code applies the same rename to the session name shown on the prompt bar, and in the `claude agents` listing when the session [runs in the background](/docs/en/agent-view). Before v2.1.221, renaming from the session list at claude.ai or in the Claude app updated only the title, and the CLI kept its previous session name; `/rename`, which runs in the CLI itself, set the name on any version.

170 166 


379 375 

380### "Couldn't verify Remote Control eligibility"376### "Couldn't verify Remote Control eligibility"

381 377 

382Claude Code could not reach the feature-flag service to check whether Remote Control is enabled for your account, typically because you are offline or a proxy is blocking the request. Retry once you have network access, or run `claude doctor` for details. The related message "Couldn't verify your organization's Remote Control policy" has the same cause and the same fix. Both messages were added in v2.1.178.378Claude Code could not reach the feature-flag service to check whether Remote Control is enabled for your account, typically because you are offline or a proxy is blocking the request. Retry once you have network access, or run `claude doctor` for details. The related message "Couldn't verify your organization's Remote Control policy" means Claude Code couldn't read that policy, and has the same fix. Both messages were added in v2.1.178.

383 379 

384### "Remote Control requires feature-flag evaluation"380### "Remote Control requires feature-flag evaluation"

385 381 

Details

3076 3076 

3077### `footerLinksRegexes`3077### `footerLinksRegexes`

3078 3078 

3079Render extra clickable badges in the footer below the input box when a regex matches turn output: tool results, including file contents and fetched pages, and Claude's own responses. Use it to turn IDs printed by project CLIs, such as review tools and issue trackers, into session links. Requires Claude Code v2.1.176 or later.3079Render extra clickable badges in the footer below the input box when a regex matches turn output: tool results, including file contents and fetched pages, and Claude's own responses. Use it to turn IDs printed by project CLIs, such as review tools and issue trackers, into session links.

3080 3080 

3081* **Scope**: [`User or managed`](#scopes)3081* **Scope**: [`User or managed`](#scopes)

3082* **Type**: array of objects, each with `type` set to `"regex"`, a `pattern` regex, a `url` template, and an optional `label`; `{name}` placeholders in `url` and `label` are filled from named capture groups in `pattern`3082* **Type**: array of objects, each with `type` set to `"regex"`, a `pattern` regex, a `url` template, and an optional `label`; `{name}` placeholders in `url` and `label` are filled from named capture groups in `pattern`


3097}3097}

3098```3098```

3099 3099 

3100With this configured, when `PROJ-1234` appears in a tool result or in Claude's reply, a `PROJ-1234` badge appears in the footer linking to `https://issues.example.com/browse/PROJ-1234`. Requires Claude Code v2.1.176 or later.3100With this configured, when `PROJ-1234` appears in a tool result or in Claude's reply, a `PROJ-1234` badge appears in the footer linking to `https://issues.example.com/browse/PROJ-1234`.

3101 3101 

3102#### Badge constraints3102#### Badge constraints

3103 3103 


3630 3630 

3631### `wheelScrollAccelerationEnabled`3631### `wheelScrollAccelerationEnabled`

3632 3632 

3633Accelerate mouse-wheel scroll speed during fast scrolls in [fullscreen rendering](/docs/en/fullscreen#mouse-wheel-scrolling). Set it to `false` for a constant scroll rate per wheel notch. Requires Claude Code v2.1.174 or later.3633Accelerate mouse-wheel scroll speed during fast scrolls in [fullscreen rendering](/docs/en/fullscreen#mouse-wheel-scrolling). Set it to `false` for a constant scroll rate per wheel notch.

3634 3634 

3635* **Scope**: [`Any file`](#scopes)3635* **Scope**: [`Any file`](#scopes)

3636* **Type**: Boolean3636* **Type**: Boolean


3644}3644}

3645```3645```

3646 3646 

3647Requires Claude Code v2.1.174 or later.

3648 

3649## Git and attribution3647## Git and attribution

3650 3648 

3651Control the attribution Claude Code adds to commits and pull requests and how it works with git.3649Control the attribution Claude Code adds to commits and pull requests and how it works with git.

skills.md +1 −1

Details

227 227 

228Claude Code labels synced skills so you can tell where they came from. The `/skills` menu and `/context` group synced skills under `claude.ai sync`, and the `/` command menu marks them as coming from claude.ai.228Claude Code labels synced skills so you can tell where they came from. The `/skills` menu and `/context` group synced skills under `claude.ai sync`, and the `/` command menu marks them as coming from claude.ai.

229 229 

230When it compares names, Claude Code ignores case, spacing, and invisible characters, and treats compatibility forms such as fullwidth letters and dash variants as their plain equivalents. For example, a local `commit` skill keeps `/commit`, and a synced `Commit` runs only as `/anthropic-skills:Commit`.230When it compares names, Claude Code ignores case, spacing, and invisible characters, and treats compatibility forms such as fullwidth letters and dash variants as their plain equivalents. For example, a synced skill named `Commit` and a local skill named `commit` count as the same name, so `/commit` keeps running your local skill.

231 231 

232A name that differs only by a look-alike letter from another alphabet counts as a different name, and the `claude.ai sync` label is how you tell the two apart. These checks and labels require Claude Code v2.1.228 or later.232A name that differs only by a look-alike letter from another alphabet counts as a different name, and the `claude.ai sync` label is how you tell the two apart. These checks and labels require Claude Code v2.1.228 or later.

233 233 

vs-code.md +4 −4

Details

52 52 

53 * **Activity Bar**: click the Spark icon in the left sidebar to open the sessions list. Click any session to open it in your [preferred location](#extension-settings), or start a new one. This icon is always visible in the Activity Bar.53 * **Activity Bar**: click the Spark icon in the left sidebar to open the sessions list. Click any session to open it in your [preferred location](#extension-settings), or start a new one. This icon is always visible in the Activity Bar.

54 * **Command Palette**: `Cmd+Shift+P` (Mac) or `Ctrl+Shift+P` (Windows/Linux), type "Claude Code", and select an option like "Open in New Tab"54 * **Command Palette**: `Cmd+Shift+P` (Mac) or `Ctrl+Shift+P` (Windows/Linux), type "Claude Code", and select an option like "Open in New Tab"

55 * **Status Bar**: if you've set [`preferredLocation`](#extension-settings) to `sidebar`, or opened Claude with **Claude Code: Open in Side Bar**, click **✱ Claude Code** in the bottom-right corner of the window. This works even when no file is open.55 * **Status Bar**: if you've set [`preferredLocation`](#extension-settings) to `sidebar`, or opened Claude with **Claude Code: Open in Side Bar**, click **✻ Claude Code** in the bottom-right corner of the window. This works even when no file is open.

56 56 

57 You can drag the Claude panel to reposition it anywhere in VS Code. See [Customize your workflow](#customize-your-workflow) for details.57 You can drag the Claude panel to reposition it anywhere in VS Code. See [Customize your workflow](#customize-your-workflow) for details.

58 </Step>58 </Step>


184 184 

185Run `/usage` to open the Account & usage dialog. The dialog requires a claude.ai sign-in, so it isn't offered on a [third-party provider](#use-third-party-providers). It shows your signed-in account, your plan, and usage bars for your plan's limits, such as the current session and the week. Each bar shows how long until its limit resets.185Run `/usage` to open the Account & usage dialog. The dialog requires a claude.ai sign-in, so it isn't offered on a [third-party provider](#use-third-party-providers). It shows your signed-in account, your plan, and usage bars for your plan's limits, such as the current session and the week. Each bar shows how long until its limit resets.

186 186 

187The dialog also breaks down what is contributing to your plan limits. It flags behaviors that account for 10% or more of recent usage, such as cache misses, long context, and subagent-heavy or highly parallel sessions, each with a tip to reduce it. Attribution tables show how much usage came from each skill, subagent, plugin, and MCP server. Requires Claude Code v2.1.174 or later.187The dialog also breaks down what is contributing to your plan limits. It flags behaviors that account for 10% or more of recent usage, such as cache misses, long context, and subagent-heavy or highly parallel sessions, each with a tip to reduce it. Attribution tables show how much usage came from each skill, subagent, plugin, and MCP server.

188 188 

189Use the Day and Week toggle to switch between the last 24 hours and the last 7 days. The figures are approximate and computed from local sessions on this machine, so usage from other devices or claude.ai is not included. For more on tracking and reducing usage, see [Track your costs](/docs/en/costs#track-your-costs).189Use the Day and Week toggle to switch between the last 24 hours and the last 7 days. The figures are approximate and computed from local sessions on this machine, so usage from other devices or claude.ai is not included. For more on tracking and reducing usage, see [Track your costs](/docs/en/costs#track-your-costs).

190 190 


389 389 

390The extension has two types of settings:390The extension has two types of settings:

391 391 

392* **Extension settings** in VS Code: control the extension's behavior within VS Code. Open with `Cmd+,` (Mac) or `Ctrl+,` (Windows/Linux), then go to Extensions → Claude Code. You can also type `/` and select **General Config** to open settings.392* **Extension settings** in VS Code: control the extension's behavior within VS Code. Open with `Cmd+,` (Mac) or `Ctrl+,` (Windows/Linux), then go to Extensions → Claude Code. You can also type `/` and select **General config…** to open settings.

393* **Claude Code settings** in `~/.claude/settings.json`: shared between the extension and CLI. Use it for allowed commands, environment variables, hooks, and MCP servers. On Pro, Max, and Team plans, it's also one input to the permission mode conversations start in. [Switch permission modes](/docs/en/permission-modes#switch-permission-modes) lists the order. See [Settings](/docs/en/settings) for details.393* **Claude Code settings** in `~/.claude/settings.json`: shared between the extension and CLI. Use it for allowed commands, environment variables, hooks, and MCP servers. On Pro, Max, and Team plans, it's also one input to the permission mode conversations start in. [Switch permission modes](/docs/en/permission-modes#switch-permission-modes) lists the order. See [Settings](/docs/en/settings) for details.

394 394 

395<Tip>395<Tip>


5904. **Disable conflicting extensions**: Temporarily disable other AI extensions (Cline, Continue, etc.)5904. **Disable conflicting extensions**: Temporarily disable other AI extensions (Cline, Continue, etc.)

5915. **Check workspace trust**: The extension doesn't work in Restricted Mode5915. **Check workspace trust**: The extension doesn't work in Restricted Mode

592 592 

593Alternatively, if you've set [`preferredLocation`](#extension-settings) to `sidebar`, or opened Claude with **Claude Code: Open in Side Bar**, click "✱ Claude Code" in the **Status Bar** (bottom-right corner). This works even without a file open. You can also use the **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) and type "Claude Code".593Alternatively, if you've set [`preferredLocation`](#extension-settings) to `sidebar`, or opened Claude with **Claude Code: Open in Side Bar**, click "✻ Claude Code" in the **Status Bar** (bottom-right corner). This works even without a file open. You can also use the **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) and type "Claude Code".

594 594 

595### Cmd+Esc does nothing on macOS595### Cmd+Esc does nothing on macOS

596 596