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
  •  
  •  
  •  
1,214 changes: 614 additions & 600 deletions content/.metadata.json

Large diffs are not rendered by default.

47 changes: 34 additions & 13 deletions content/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,44 @@
# Changelog

## 2.1.146
## 2.1.148

- Renamed `/simplify` to `/code-review` with an optional effort level (e.g. `/code-review high`)
- Auto mode no longer suppresses `AskUserQuestion` when the user or a skill explicitly relies on it
- Fixed Windows PowerShell tool failing with "command line is invalid" when `pwsh` is installed via winget or the Microsoft Store (regression in v2.1.124)
- Fixed MCP `resources/list`, `resources/templates/list`, and `prompts/list` dropping items past page 1 on paginating servers
- Fixed the Bash tool returning exit code 127 on every command for some users (a regression introduced in 2.1.147)

## 2.1.147

- Pinned background sessions (`Ctrl+T` in `claude agents`) now stay alive when idle, are restarted in place to apply Claude Code updates, and are shed under memory pressure only after non-pinned sessions
- Renamed `/simplify` to `/code-review`. It now reports correctness bugs at a chosen effort level (e.g., `/code-review high`); pass `--comment` to post findings as inline GitHub PR comments. The old cleanup-and-fix behavior has been removed
- Improved auto-updater: retries transient network failures, reports specific error categories and OS error codes on failure, and shows the current version when an update fails
- Improved diff rendering performance for large file edits
- Prompt history no longer records consecutive duplicate entries — recalling a prompt with arrow-up and submitting it again won't add another copy
- Fixed enterprise login restrictions (`forceLoginOrgUUID` and `forceLoginMethod` managed-settings) not being enforced against third-party-provider and API-key sessions
- Fixed `&` in `!` command output displaying as `&`, which broke copy-pasting URLs from commands like `gcloud auth login` on headless machines
- Fixed unknown slash commands silently doing nothing in headless/SDK mode — they now show an error message
- Fixed `/help` rendering a broken tab header and showing only one command per page on small terminals when not in fullscreen mode
- Fixed shell snapshot dropping user functions whose names start with a single underscore, which broke aliases referencing them
- Fixed plugin agents that declare multiple `Agent(...)` types in `tools:` frontmatter dropping all but the last entry
- Fixed hook `if` conditions like `PowerShell(git push*)` never matching — only `PowerShell(*)` worked
- Fixed PowerShell tool dropping output for commands that rely on the default formatter
- Fixed: on Windows, "Yes, and don't ask again" for a PowerShell script invocation now writes a rule that actually matches on subsequent runs
- Fixed PowerShell tool failing on Windows with exit code 1 when `pwsh` is installed via winget or the Microsoft Store
- Fixed `/effort` opening with the slider on the wrong level — it now starts at your current effort
- Fixed paginating MCP servers dropping resources, templates, and prompts past page 1
- Fixed full-screen strobing in attached background sessions on Windows Terminal while Claude is streaming
- Fixed the auto-updater status line not showing your current version when an update fails
- Fixed on Windows, removing a background-job worktree no longer follows NTFS junctions into the main repo
- Fixed: on Windows, removing a background-job worktree no longer follows NTFS junctions into the main repo
- Fixed `/background` refusing sessions whose only typed input was a skill or custom slash command
- Fixed backgrounded sessions re-prompting for tool permissions you already granted with "don't ask again"
- Fixed `/theme` color editor and "New custom theme" dialogs not responding to Esc
- Fixed auto mode suppressing `AskUserQuestion` when the user or a skill explicitly relies on it; the auto-mode classifier now sees the user's answers as intent signal
- Fixed `/theme` "New custom theme" and color editor dialogs not responding to Esc
- Fixed an uncaught exception at the end of streaming sessions when running via the Agent SDK
- Fixed `forceLoginOrgUUID` and `forceLoginMethod` managed-settings policies not being enforced against third-party-provider and API-key sessions
- Fixed a rare hang when waiting for scroll to settle on Windows
- Fixed stale and doubled rows in the agent view list on Windows when background session results contain wide (CJK) characters
- Fixed pasted text being delivered to agents as an unreadable `[Pasted text #N]` placeholder instead of the actual content
- Fixed plugin component counts in `claude plugin details` and `/plugin` being doubled when a plugin's manifest listed paths overlapping its default directories
- Fixed backgrounded sessions re-prompting for tool permissions you already granted with "don't ask again"
- Fixed GNOME Terminal right-click and middle-click paste not inserting text
- Fixed `CLAUDE_CODE_SUBAGENT_MODEL` not being forwarded to child processes in multi-agent sessions
- Improved auto-updater reliability: native version checks and downloads now retry transient network failures instead of failing immediately
- Improved diff rendering performance for large file edits
- Fixed `CLAUDE_CODE_SUBAGENT_MODEL` not applying to teammate processes spawned by agent teams
- Fixed slash commands followed by a tab or newline being treated as an unknown command
- Fixed several spacing and layout glitches in the `/plugin`, `/status`, `/mobile`, `/sandbox`, and `/permissions` menus
- Fixed stripped images prompting the model to repeatedly re-read media that was no longer present

## 2.1.145

Expand Down
36 changes: 18 additions & 18 deletions content/claude-code-manifest.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"name": "@anthropic-ai/claude-code",
"version": "2.1.146",
"version": "2.1.148",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
},
"license": "SEE LICENSE IN README.md",
"_id": "@anthropic-ai/claude-code@2.1.146",
"_id": "@anthropic-ai/claude-code@2.1.148",
"maintainers": [
{
"name": "zak-anthropic",
Expand Down Expand Up @@ -73,20 +73,20 @@
"claude": "bin/claude.exe"
},
"dist": {
"shasum": "2067df984dac3300def6558749a92565981eedfa",
"tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.146.tgz",
"shasum": "33bc1100d6200de08744f0aa9063d26f055d2b7f",
"tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.148.tgz",
"fileCount": 7,
"integrity": "sha512-1XaW5RY1enQYlZCoAPnXI3hxchpMR3PfCozFCNHEjTZKIeevjFyBAUMYdzd35EB3fGIn89D5R7HKcztpnG0FPg==",
"integrity": "sha512-D+trSAHw7kPBX77Zzm95Si87Sk2K4OPALRbI4TO095OSSa2pLGsLQBiccuuWNKLpItUSd1sWdkmMLuvdHHustQ==",
"signatures": [
{
"sig": "MEUCIQCzJKZO2PkdCmKXmky2m+9ugkV5lBMIf21vT6790d0BlAIgT33fwSXQAh54adwOYg76McM4aFER1arIkTCy7lR3pos=",
"sig": "MEUCIDRVaXTc0uKmYTBKNP7UMA36Yl3nYsXMmeshRHH0lZspAiEA0dpya1TC7UdKjNd9y/uRDFX1aOlOoHrx7wKgRx7Nt70=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 136524
},
"type": "module",
"_from": "file:staged-npm/anthropic-ai-claude-code-2.1.146.tgz",
"_from": "file:staged-npm/anthropic-ai-claude-code-2.1.148.tgz",
"engines": {
"node": ">=18.0.0"
},
Expand All @@ -98,8 +98,8 @@
"name": "wolffiex",
"email": "wolffiex@anthropic.com"
},
"_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.146.tgz",
"_integrity": "sha512-1XaW5RY1enQYlZCoAPnXI3hxchpMR3PfCozFCNHEjTZKIeevjFyBAUMYdzd35EB3fGIn89D5R7HKcztpnG0FPg==",
"_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.148.tgz",
"_integrity": "sha512-D+trSAHw7kPBX77Zzm95Si87Sk2K4OPALRbI4TO095OSSa2pLGsLQBiccuuWNKLpItUSd1sWdkmMLuvdHHustQ==",
"_npmVersion": "11.12.1",
"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 All @@ -108,17 +108,17 @@
"_hasShrinkwrap": false,
"readmeFilename": "README.md",
"optionalDependencies": {
"@anthropic-ai/claude-code-linux-x64": "2.1.146",
"@anthropic-ai/claude-code-win32-x64": "2.1.146",
"@anthropic-ai/claude-code-darwin-x64": "2.1.146",
"@anthropic-ai/claude-code-linux-arm64": "2.1.146",
"@anthropic-ai/claude-code-win32-arm64": "2.1.146",
"@anthropic-ai/claude-code-darwin-arm64": "2.1.146",
"@anthropic-ai/claude-code-linux-x64-musl": "2.1.146",
"@anthropic-ai/claude-code-linux-arm64-musl": "2.1.146"
"@anthropic-ai/claude-code-linux-x64": "2.1.148",
"@anthropic-ai/claude-code-win32-x64": "2.1.148",
"@anthropic-ai/claude-code-darwin-x64": "2.1.148",
"@anthropic-ai/claude-code-linux-arm64": "2.1.148",
"@anthropic-ai/claude-code-win32-arm64": "2.1.148",
"@anthropic-ai/claude-code-darwin-arm64": "2.1.148",
"@anthropic-ai/claude-code-linux-x64-musl": "2.1.148",
"@anthropic-ai/claude-code-linux-arm64-musl": "2.1.148"
},
"_npmOperationalInternal": {
"tmp": "tmp/claude-code_2.1.146_1779308053475_0.8541320598611926",
"tmp": "tmp/claude-code_2.1.148_1779408601979_0.09446857852269042",
"host": "s3://npm-registry-packages-npm-production"
}
}
2 changes: 1 addition & 1 deletion content/en/agents-and-tools/mcp-tunnels/console.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Create tunnels, register CA certificates, retrieve the tunnel token, and attach
---

<Note>
MCP tunnels is a Research Preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
MCP tunnels is a research preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
</Note>

This page covers the Console side of an MCP tunnels deployment: creating a tunnel, registering your CA certificate, retrieving the tunnel token, and attaching the tunneled servers to an agent. [Deploy MCP tunnels with Helm](/docs/en/agents-and-tools/mcp-tunnels/deploy-helm) and [Deploy MCP tunnels with Docker Compose](/docs/en/agents-and-tools/mcp-tunnels/deploy-compose) cover running the stack inside your network.
Expand Down
18 changes: 9 additions & 9 deletions content/en/agents-and-tools/mcp-tunnels/deploy-compose.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Install the MCP tunnel stack on a VM using Docker Compose.
---

<Note>
MCP tunnels is a Research Preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
MCP tunnels is a research preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
</Note>

This guide deploys the MCP tunnel stack as hardened containers on a single host. The same configuration can be replicated across multiple hosts for availability.
Expand Down Expand Up @@ -103,7 +103,7 @@ The `setup` service uses Workload Identity Federation to fetch the tunnel token,
environment:
- TUNNEL_TOKEN
# Share the proxy's netns so localhost:8080 reaches it.
network_mode: "service:mcp-gateway"
network_mode: "service:mcp-proxy"
restart: unless-stopped
user: "65532:65532"
read_only: true
Expand All @@ -117,10 +117,10 @@ The `setup` service uses Workload Identity Federation to fetch the tunnel token,
max-size: "10m"
max-file: "3"

mcp-gateway:
mcp-proxy:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
volumes:
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
- ./data:/data:ro
restart: unless-stopped
user: "65532:65532"
Expand Down Expand Up @@ -195,7 +195,7 @@ The `setup` service uses Workload Identity Federation to fetch the tunnel token,
`tunnel_domain` is **required**: the proxy uses it to strip the domain suffix from incoming hostnames before looking up the subdomain in `routes`. `routes` is a flat map from subdomain to upstream URL.

```bash
cat > config/mcp-gateway.yaml <<EOF
cat > config/mcp-proxy.yaml <<EOF
listen_addr: ":8080"
log_level: info
shutdown_timeout: 30s
Expand Down Expand Up @@ -292,7 +292,7 @@ Use this flow if you didn't turn on **Set up programmatic access**, or for local
`tunnel_domain` is **required**: the proxy uses it to strip the domain suffix from incoming hostnames before looking up the subdomain in `routes`. `routes` is a flat map from subdomain to upstream URL, not a list.

```bash
cat > config/mcp-gateway.yaml <<EOF
cat > config/mcp-proxy.yaml <<EOF
listen_addr: ":8080"
log_level: info
tunnel_domain: ${TUNNEL_DOMAIN}
Expand Down Expand Up @@ -321,7 +321,7 @@ Use this flow if you didn't turn on **Set up programmatic access**, or for local
environment:
- TUNNEL_TOKEN
# Share the proxy's netns so localhost:8080 reaches it.
network_mode: "service:mcp-gateway"
network_mode: "service:mcp-proxy"
restart: unless-stopped
user: "65532:65532"
read_only: true
Expand All @@ -335,10 +335,10 @@ Use this flow if you didn't turn on **Set up programmatic access**, or for local
max-size: "10m"
max-file: "3"

mcp-gateway:
mcp-proxy:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
volumes:
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
- ./data:/data:ro
restart: unless-stopped
user: "65532:65532"
Expand Down
2 changes: 1 addition & 1 deletion content/en/agents-and-tools/mcp-tunnels/deploy-helm.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Install the MCP tunnel stack on a Kubernetes cluster using the Anthropic Helm ch
---

<Note>
MCP tunnels is a Research Preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
MCP tunnels is a research preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
</Note>

The Anthropic Helm chart installs the MCP tunnel stack as a single Deployment and attaches it to the tunnel you created in the [Console](/docs/en/agents-and-tools/mcp-tunnels/console#create-a-tunnel).
Expand Down
22 changes: 11 additions & 11 deletions content/en/agents-and-tools/mcp-tunnels/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Connect Claude to a private MCP server using a local Docker Compose deployment.
---

<Note>
MCP tunnels is a Research Preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
MCP tunnels is a research preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
</Note>

This quickstart takes you from zero to Claude calling a private MCP server through a tunnel. It uses Docker Compose with manually supplied credentials, which is the shortest path for local testing. For production deployments, see [Deploy with Helm](/docs/en/agents-and-tools/mcp-tunnels/deploy-helm) or [Deploy with Docker Compose](/docs/en/agents-and-tools/mcp-tunnels/deploy-compose).
Expand Down Expand Up @@ -155,7 +155,7 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
<Tabs>
<Tab title="macOS / Linux">
```bash
cat > config/mcp-gateway.yaml <<EOF
cat > config/mcp-proxy.yaml <<EOF
listen_addr: ":8080"
tunnel_domain: ${TUNNEL_DOMAIN}
tls:
Expand All @@ -167,10 +167,10 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,

cat > docker-compose.yaml <<'EOF'
services:
mcp-gateway:
mcp-proxy:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
volumes:
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
- ./data:/data:ro
restart: unless-stopped

Expand All @@ -179,7 +179,7 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
command: tunnel --no-autoupdate run --url http://localhost:8080
environment:
- TUNNEL_TOKEN
network_mode: "service:mcp-gateway"
network_mode: "service:mcp-proxy"
restart: unless-stopped

hello-mcp:
Expand All @@ -202,14 +202,14 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
key_file: /data/tls.key
routes:
echo: http://hello-mcp:9000
"@ | Set-Content -NoNewline -Encoding ascii -Path config/mcp-gateway.yaml
"@ | Set-Content -NoNewline -Encoding ascii -Path config/mcp-proxy.yaml

@'
services:
mcp-gateway:
mcp-proxy:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
volumes:
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
- ./data:/data:ro
restart: unless-stopped

Expand All @@ -218,7 +218,7 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
command: tunnel --no-autoupdate run --url http://localhost:8080
environment:
- TUNNEL_TOKEN
network_mode: "service:mcp-gateway"
network_mode: "service:mcp-proxy"
restart: unless-stopped

hello-mcp:
Expand All @@ -239,14 +239,14 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
<Tab title="macOS / Linux">
```bash
docker compose up -d
docker compose logs mcp-gateway | grep "route configured"
docker compose logs mcp-proxy | grep "route configured"
docker compose logs cloudflared | grep "Registered tunnel connection"
```
</Tab>
<Tab title="Windows (PowerShell)">
```powershell
docker compose up -d
docker compose logs mcp-gateway | Select-String "route configured"
docker compose logs mcp-proxy | Select-String "route configured"
docker compose logs cloudflared | Select-String "Registered tunnel connection"
```
</Tab>
Expand Down
6 changes: 3 additions & 3 deletions content/en/agents-and-tools/mcp-tunnels/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Proxy configuration fields, the Tunnels REST API, certificate requirements, and
---

<Note>
MCP tunnels is a Research Preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
MCP tunnels is a research preview feature. [Request access](https://claude.com/form/claude-managed-agents) to try it.
</Note>

## Proxy configuration
Expand Down Expand Up @@ -84,7 +84,7 @@ Attaches to the tunnel you created in the Console, generates a CA and server cer
|---|---|---|
| `--api-url` | Claude API base URL. Also read from `API_URL`. | Required |
| `--tunnel-id` | Tunnel ID to attach to (`tnl_...`). Also read from `TUNNEL_ID`. | Required |
| `--output` | Output destination: `dir:/path` or `k8s-secret:NAME`. | `k8s-secret:mcp-gateway` (auto-detected when running in a Kubernetes pod; required otherwise) |
| `--output` | Output destination: `dir:/path` or `k8s-secret:NAME`. | `k8s-secret:mcp-tunnel` (auto-detected when running in a Kubernetes pod; required otherwise) |
| `--cert-duration` | Server certificate validity period. | `2160h` (90 days) |
| `--token-version` | Change-detection string. A new value triggers token rotation on re-run. | None |

Expand All @@ -96,7 +96,7 @@ Issues a new server certificate signed by the stored CA. Makes no API calls.

| Flag | Description | Default |
|---|---|---|
| `--output` | Output destination: `dir:/path` or `k8s-secret:NAME`. | `k8s-secret:mcp-gateway` (auto-detected when running in a Kubernetes pod; required otherwise) |
| `--output` | Output destination: `dir:/path` or `k8s-secret:NAME`. | `k8s-secret:mcp-tunnel` (auto-detected when running in a Kubernetes pod; required otherwise) |
| `--cert-duration` | New certificate validity period. | `2160h` (90 days) |
| `--renew-before` | Skip renewal if the existing certificate has more than this duration remaining. | `0` (always renew) |

Expand Down
Loading
Loading