Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5,524 changes: 3,020 additions & 2,504 deletions content/.metadata.json

Large diffs are not rendered by default.

36 changes: 36 additions & 0 deletions content/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,41 @@
# Changelog

## 2.1.247

- Added the `SendFeedback` tool: when something goes wrong in a session, Claude can draft a feedback report for you to review and send from `/feedback` (turn off with the `feedbackDrafts` setting)
- Added `{id, text, cooldownSessions, priority}` entries, `tipsFile`, and `label` to `spinnerTipsOverride`, so organizations can rotate their own tips alongside the built-in ones
- Added a tip on Bash permission prompts pointing to auto mode, with a one-keystroke "Yes, and switch to auto mode" option
- Added `/claude-api cost-optimize` to profile an existing project's Claude API spend and work through cost levers (caching, token hygiene, batch, effort, model choice) one measured change at a time
- Updated the `/claude-api` skill with Admin API coverage (organization members, invites, workspaces, API keys, rate limit reports, workload identity federation, CMEK)
- Fixed fast arrow-key + Enter sequences acting on the row above the one you navigated to in history search, `/config`, `/mcp`, `/skills`, background tasks, and `/model`
- Fixed sub-agents dying on a first-call model 404: they now use the session's fallback model chain, and the error returned to the parent includes the error type, status, request id, and model
- Fixed a hook or background agent that printed megabytes of error output being able to overflow the conversation and wedge the session on "Prompt is too long"
- Fixed Ctrl keyboard shortcuts not firing under non-Latin (e.g. Cyrillic) keyboard layouts in kitty-protocol terminals
- Fixed text like `<35;150;7M` being inserted into the prompt when a mouse report arrived split across reads right after the escape prefix
- Fixed the Bash sandbox's after-command cleanup deleting a dotfile-managed `~/.claude/settings.json` symlink (nix/home-manager, stow) when it is repointed outside the sandbox's writable area
- Fixed `/terminal-setup` overwriting your entire Zed `keymap.json` instead of merging in its keybinding
- Fixed `/rename` silently confirming when the session registry could not be updated; it now says other sessions may still show the old name
- Fixed `/compact` and "Summarize from here" in sessions started with `--agent` summarizing under the default system prompt instead of the conversation's own
- Fixed a background session showing "opening…" forever in `claude agents` after its terminal host process died; the row now fails within seconds with the reason, and Enter restarts it
- Fixed unbounded memory growth when a hook's or background task's output file could not be written; the file now notes where output was lost
- Fixed `/install-github-app` over SSH: the copy shortcut now says how the sign-in URL was copied instead of always claiming success, and the URL appears immediately when no browser can open
- Fixed shell commands carried over from the foreground logging an internal error or showing a misleading `[exited with code -1]` line when they finish in background sessions
- Fixed a version-less marketplace plugin's live cache directory being deleted and recreated on a second-scope install, which could disrupt a running session using it
- Fixed Remote Control sessions started with `/remote-control` not reporting the working-tree diff to connected clients
- Fixed self-hosted runner sessions reporting `running` before Claude Code had started, which could trigger a premature "Claude is waiting for your input" notification from the Claude desktop app
- Fixed first-run setup exiting with "Unable to connect to Anthropic services" when managed settings configure Claude apps gateway sign-in and Anthropic endpoints are unreachable
- Fixed cloud sessions (Claude Code on the web, desktop and mobile apps) sometimes showing the previous permission mode when you switch modes right after sending a message
- Fixed cloud sessions going silent when the session's container restarts between turns while a background agent, shell, or monitor is still running — the resumed session now reports the lost work
- Improved plugin marketplace hardening: names containing control or invisible characters are rejected, and marketplace-supplied text in `/plugin` and `claude plugin` output is escape-safe
- Improved Bedrock, Vertex, and Foundry sessions (and any with telemetry disabled): Claude is now told when a configured MCP server failed to connect, instead of concluding its tools don't exist
- Changed Sonnet 5's default auto-compact window to its full 1M context, so sessions on the 1M window now auto-compact at about 967K tokens instead of about 934K
- Changed cross-session peer messages to collapse by default to a one-line `Message from @<sender>: <first line>` preview; Ctrl+O expands the full body
- Changed terminal hyperlinks in rendered markdown: link targets that point at a network or automounter path, contain a control character, or lead with an invisible character now render as plain text
- Changed the prompt-footer PR badge to skip its GitHub re-check on terminal refocus when the last check is under a minute old
- Changed analytics to stay off from startup, not only after login, when managed settings force gateway login or a custom OAuth deployment is configured
- Changed Claude apps gateway sign-in requests to identify Claude Code (a `surface=claude_code` device-authorization parameter and a `claude-code/<version>` User-Agent)
- Changed organization sign-in enforcement to exit at start when the administrator's managed settings cannot be read, even if host-supplied or per-user Windows registry settings exist

## 2.1.246

- Added a startup warning for Bash allow rules with a wildcard before the subcommand (e.g. `Bash(git * main)`), since they also match options inserted before the subcommand
Expand Down
40 changes: 20 additions & 20 deletions content/claude-code-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,25 @@
"url": "https://github.com/anthropics/claude-code/issues"
},
"dist": {
"shasum": "4222a707657362a9588eb194bb56c339193cbfd2",
"tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.246.tgz",
"shasum": "c64ecfdfff0e8a7f7c79467b178344ec52e08fbe",
"tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.247.tgz",
"fileCount": 7,
"integrity": "sha512-E2PEKkal9D05dWnsc2fcPclJpEbJbnIE3D1vp33aPrsFbmdbqyNzEcc9/SeFIj53hvP/M5BuHygOFbeoBWEAOg==",
"integrity": "sha512-2Z2UQKom3x6GBQDYlFFi00KbRciqsuGL9CpK+IN3fXmmJb7IXVitrRZ6HZyUw0ixnckr814GIp0FUaXwDEbBrw==",
"signatures": [
{
"sig": "MEUCIFg+x9zVDnGQevwMGtK61THvjT2SbC0ximwfpsouftxGAiEAvWqK1c1a/qi/NGhmNT5BRLMb0QPoYp0bus4luMqX9fM=",
"sig": "MEUCIQCTCj0fY9zWMr7bKZo/+kmpnYX9++NqBDjQAIBQk0MC4wIgD7Q67OtopvToafYzgG64y7jG0miGj6oRnKt3Qu7OySY=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
},
{
"sig": "MEUCIAv6NdvjZ1ZiWV/Fz+HaQbQfJ/wa3Vq66wD9qq/K6dD5AiEAqKZvdS3HXLhiARySnrcT+8P11Fi961yrl71RisNZVHk=",
"sig": "MEUCIQCMIO2FOJk1Gxyrz0jEfSboFYCbkTCFpjcdDjHMFm3UbgIgQGoeBph5TrfVsTdD/puq+LgVCNto6Tkwig7KJvvTmyQ=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 179247
"unpackedSize": 178324
},
"name": "@anthropic-ai/claude-code",
"type": "module",
"_from": "file:staged-npm/anthropic-ai-claude-code-2.1.246.tgz",
"_from": "file:staged-npm/anthropic-ai-claude-code-2.1.247.tgz",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
Expand All @@ -42,8 +42,8 @@
"email": "wolffiex@anthropic.com"
},
"homepage": "https://github.com/anthropics/claude-code",
"_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.246.tgz",
"_integrity": "sha512-E2PEKkal9D05dWnsc2fcPclJpEbJbnIE3D1vp33aPrsFbmdbqyNzEcc9/SeFIj53hvP/M5BuHygOFbeoBWEAOg==",
"_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.247.tgz",
"_integrity": "sha512-2Z2UQKom3x6GBQDYlFFi00KbRciqsuGL9CpK+IN3fXmmJb7IXVitrRZ6HZyUw0ixnckr814GIp0FUaXwDEbBrw==",
"_npmVersion": "11.17.0",
"description": "Use Claude, Anthropic's AI assistant, right from your terminal. Claude can understand your codebase, edit files, run terminal commands, and handle entire workflows for you.",
"directories": {},
Expand Down Expand Up @@ -106,19 +106,19 @@
"_hasShrinkwrap": false,
"readmeFilename": "README.md",
"optionalDependencies": {
"@anthropic-ai/claude-code-linux-x64": "2.1.246",
"@anthropic-ai/claude-code-win32-x64": "2.1.246",
"@anthropic-ai/claude-code-darwin-x64": "2.1.246",
"@anthropic-ai/claude-code-linux-arm64": "2.1.246",
"@anthropic-ai/claude-code-win32-arm64": "2.1.246",
"@anthropic-ai/claude-code-darwin-arm64": "2.1.246",
"@anthropic-ai/claude-code-linux-x64-musl": "2.1.246",
"@anthropic-ai/claude-code-linux-arm64-musl": "2.1.246"
"@anthropic-ai/claude-code-linux-x64": "2.1.247",
"@anthropic-ai/claude-code-win32-x64": "2.1.247",
"@anthropic-ai/claude-code-darwin-x64": "2.1.247",
"@anthropic-ai/claude-code-linux-arm64": "2.1.247",
"@anthropic-ai/claude-code-win32-arm64": "2.1.247",
"@anthropic-ai/claude-code-darwin-arm64": "2.1.247",
"@anthropic-ai/claude-code-linux-x64-musl": "2.1.247",
"@anthropic-ai/claude-code-linux-arm64-musl": "2.1.247"
},
"_npmOperationalInternal": {
"tmp": "tmp/claude-code_2.1.246_1787685454325_0.6828537139820177",
"tmp": "tmp/claude-code_2.1.247_1787767320957_0.43571757369009734",
"host": "s3://npm-registry-packages-npm-production"
},
"_id": "@anthropic-ai/claude-code@2.1.246",
"version": "2.1.246"
"_id": "@anthropic-ai/claude-code@2.1.247",
"version": "2.1.247"
}
16 changes: 1 addition & 15 deletions content/claude/claude-tag/admins/add-connections.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,21 +150,7 @@ Domain entries allow hosts one at a time. For a scope whose work needs more of t

A new environment's network access level is Trusted access, which allows a [documented set of package registries and developer hosts](https://code.claude.com/docs/en/cloud-environments#default-allowed-domains). A channel can already reach hosts like `pypi.org` and `registry.npmjs.org` with no domain entry.

To give a scope broader access, create an environment with a more permissive level and pin it on the scope.

<Steps>
<Step title="Create the environment">
From the **Cloud environments** page in [admin settings](https://claude.ai/admin-settings), add an [organization-shared environment](https://code.claude.com/docs/en/cloud-environments#organization-shared-environments) and set its network access level. **Full access** allows any domain; see [Network access in the Claude Code docs](https://code.claude.com/docs/en/cloud-environments#network-access) for the other levels. This step takes an Owner or admin.

Don't create the environment at [`claude.ai/code`](https://claude.ai/code): environments you create there belong to your individual account, so they never appear in the picker.
</Step>

<Step title="Pin it on the scope">
Open the scope's **Advanced** section and use the **Environment** picker. With nothing pinned, sessions use the organization default.
</Step>
</Steps>

The environment must be scoped to the organization, not an individual account. If sessions don't pick up the one you pinned, see [the environment troubleshooting entry](/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one).
To give a scope broader access, create an organization-shared environment with a more permissive level and set it on the scope, as described in [Configure the environment for a scope](/docs/claude-tag/admins/customize#configure-the-environment-for-a-scope). **Full access** allows any domain; see [Network access in the Claude Code docs](https://code.claude.com/docs/en/cloud-environments#network-access) for the other levels.

### Allow all hosts

Expand Down
12 changes: 6 additions & 6 deletions content/claude/claude-tag/admins/attach-to-scope.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,13 @@ A new instruction applies to sessions started after you save it. Claude reads it

By default, anyone in a channel who is also a member of your Claude organization can edit that channel's instructions from the **Configure** link in Claude's reply footer. The **Channel member edits** setting in a scope's **Advanced** settings controls this.

| Option | Effect |
| :---------- | :-------------------------------------------------------------------------------------------------------- |
| **Inherit** | Follow the parent scope's setting |
| **Allow** | Members can edit channel instructions from the Configure link |
| **Block** | The Configure page is read-only for members, with a note that only admins can change channel instructions |
| Option | Effect |
| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Inherit** | Follow the parent scope's setting |
| **Allow** | Members can edit channel instructions from the Configure link |
| **Block** | The Configure page is read-only for members, with a note that only admins can change channel instructions. Claude also declines to make a model the channel default when anyone asks in a thread |

A chain of scopes that all inherit resolves to **Allow**. Set **Block** at the workspace or Default Slack access scope to lock channel instructions across every channel beneath it. A [channel manager](/docs/claude-tag/admins/restrict-access#delegate-channel-setup-to-channel-managers) can still edit instructions in a channel assigned to them when **Block** is set.
A chain of scopes that all inherit resolves to **Allow**. Set **Block** at the workspace or Default Slack access scope to lock channel instructions across every channel beneath it. A [channel manager](/docs/claude-tag/admins/restrict-access#delegate-channel-setup-to-channel-managers) can still edit instructions and the default model from the Configure page in a channel assigned to them when **Block** is set.

## Verify the bundle is live

Expand Down
4 changes: 2 additions & 2 deletions content/claude/claude-tag/admins/audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const BetaNote = () => <Info>Claude Tag is in public beta. Features and b

Use this page to review what Claude Tag is doing across your organization: which routines are scheduled, what memory it has saved, and where to find a record of each action it took.

<Note>The Audit page opens for Owners and Admins in your Claude organization; the other trails on this page are visible to anyone with access to the underlying surface.</Note>
<Note>The Audit page opens for Owners in your Claude organization; the other trails on this page are visible to anyone with access to the underlying surface.</Note>

Claude Tag activity is auditable in four places:

Expand All @@ -28,7 +28,7 @@ The Audit page, labeled **Activity** in the admin console's left nav and page he
| Tab | What it shows |
| :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Scheduled work** | Every routine across your organization, with a **Scope** filter and a per-row **⋮** menu (View details, Pause/Resume, Delete) |
| **Memory** | A link to each scope's memory files, where you can read what Claude has saved for that workspace or channel (you can also edit or delete them there) |
| **Memory** | Each scope's memory files, where you can read what Claude has saved for that workspace or channel. Owners can also edit or delete entries there. |
| **Network events** | An hourly JSON export of outbound calls Claude made through Agent Proxy. Git and MCP traffic are not included in this export. Select a date and hour to download. |

Each routine on the **Scheduled work** tab shows **Created by** (the member who set it up) in its **View details** dialog. There is no per-action log of every task and who asked; for that, use the trails below.
Expand Down
5 changes: 4 additions & 1 deletion content/claude/claude-tag/admins/configure-github.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,10 @@ Repository skills apply only in sessions that have the repository. To give a ski

### Install project dependencies

Every session runs in an isolated sandbox with a standard set of preinstalled tools. The sandbox is the same for every repository; there is no setup script or custom image to configure. If a project needs something the standard set doesn't include, such as a specific language runtime or a database client, add the install commands to the repository's `CLAUDE.md`.
Every session runs in an isolated sandbox with a standard set of preinstalled tools. There are two places to add what a project needs beyond that set, such as a specific language runtime or a database client:

* **For every session in a channel**, an admin adds the install commands to the setup script of the environment the channel's sessions run on. See [Configure the environment for a scope](/docs/claude-tag/admins/customize#configure-the-environment-for-a-scope).
* **For one repository**, add the install commands to the repository's `CLAUDE.md`.

Claude follows `CLAUDE.md` as guidance when it starts work that needs it, not as an unconditional setup step. Write each install as a precondition of the work it supports, for example "install the SDK before building or running tests", so Claude runs it when a task touches that code. The sandbox is fresh for every session, so the installs repeat each time Claude works in the repository.

Expand Down
Loading
Loading