Skip to content

Commit afc9a17

Browse files
github-actions[bot]claude
authored andcommitted
docs: Claude Code v2.1.148 - Enterprise MCP management + pinned sessions
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ecd9f4d commit afc9a17

306 files changed

Lines changed: 2010 additions & 1617 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/.metadata.json

Lines changed: 614 additions & 600 deletions
Large diffs are not rendered by default.

content/CHANGELOG.md

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,44 @@
11
# Changelog
22

3-
## 2.1.146
3+
## 2.1.148
44

5-
- Renamed `/simplify` to `/code-review` with an optional effort level (e.g. `/code-review high`)
6-
- Auto mode no longer suppresses `AskUserQuestion` when the user or a skill explicitly relies on it
7-
- 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)
8-
- Fixed MCP `resources/list`, `resources/templates/list`, and `prompts/list` dropping items past page 1 on paginating servers
5+
- Fixed the Bash tool returning exit code 127 on every command for some users (a regression introduced in 2.1.147)
6+
7+
## 2.1.147
8+
9+
- 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
10+
- 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
11+
- 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
12+
- Improved diff rendering performance for large file edits
13+
- Prompt history no longer records consecutive duplicate entries — recalling a prompt with arrow-up and submitting it again won't add another copy
14+
- Fixed enterprise login restrictions (`forceLoginOrgUUID` and `forceLoginMethod` managed-settings) not being enforced against third-party-provider and API-key sessions
15+
- Fixed `&` in `!` command output displaying as `&amp;`, which broke copy-pasting URLs from commands like `gcloud auth login` on headless machines
16+
- Fixed unknown slash commands silently doing nothing in headless/SDK mode — they now show an error message
17+
- Fixed `/help` rendering a broken tab header and showing only one command per page on small terminals when not in fullscreen mode
18+
- Fixed shell snapshot dropping user functions whose names start with a single underscore, which broke aliases referencing them
19+
- Fixed plugin agents that declare multiple `Agent(...)` types in `tools:` frontmatter dropping all but the last entry
20+
- Fixed hook `if` conditions like `PowerShell(git push*)` never matching — only `PowerShell(*)` worked
21+
- Fixed PowerShell tool dropping output for commands that rely on the default formatter
22+
- Fixed: on Windows, "Yes, and don't ask again" for a PowerShell script invocation now writes a rule that actually matches on subsequent runs
23+
- Fixed PowerShell tool failing on Windows with exit code 1 when `pwsh` is installed via winget or the Microsoft Store
24+
- Fixed `/effort` opening with the slider on the wrong level — it now starts at your current effort
25+
- Fixed paginating MCP servers dropping resources, templates, and prompts past page 1
926
- Fixed full-screen strobing in attached background sessions on Windows Terminal while Claude is streaming
10-
- Fixed the auto-updater status line not showing your current version when an update fails
11-
- Fixed on Windows, removing a background-job worktree no longer follows NTFS junctions into the main repo
27+
- Fixed: on Windows, removing a background-job worktree no longer follows NTFS junctions into the main repo
1228
- Fixed `/background` refusing sessions whose only typed input was a skill or custom slash command
13-
- Fixed backgrounded sessions re-prompting for tool permissions you already granted with "don't ask again"
14-
- Fixed `/theme` color editor and "New custom theme" dialogs not responding to Esc
29+
- 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
30+
- Fixed `/theme` "New custom theme" and color editor dialogs not responding to Esc
1531
- Fixed an uncaught exception at the end of streaming sessions when running via the Agent SDK
16-
- Fixed `forceLoginOrgUUID` and `forceLoginMethod` managed-settings policies not being enforced against third-party-provider and API-key sessions
32+
- Fixed a rare hang when waiting for scroll to settle on Windows
33+
- Fixed stale and doubled rows in the agent view list on Windows when background session results contain wide (CJK) characters
34+
- Fixed pasted text being delivered to agents as an unreadable `[Pasted text #N]` placeholder instead of the actual content
35+
- Fixed plugin component counts in `claude plugin details` and `/plugin` being doubled when a plugin's manifest listed paths overlapping its default directories
36+
- Fixed backgrounded sessions re-prompting for tool permissions you already granted with "don't ask again"
1737
- Fixed GNOME Terminal right-click and middle-click paste not inserting text
18-
- Fixed `CLAUDE_CODE_SUBAGENT_MODEL` not being forwarded to child processes in multi-agent sessions
19-
- Improved auto-updater reliability: native version checks and downloads now retry transient network failures instead of failing immediately
20-
- Improved diff rendering performance for large file edits
38+
- Fixed `CLAUDE_CODE_SUBAGENT_MODEL` not applying to teammate processes spawned by agent teams
39+
- Fixed slash commands followed by a tab or newline being treated as an unknown command
40+
- Fixed several spacing and layout glitches in the `/plugin`, `/status`, `/mobile`, `/sandbox`, and `/permissions` menus
41+
- Fixed stripped images prompting the model to repeatedly re-read media that was no longer present
2142

2243
## 2.1.145
2344

content/claude-code-manifest.json

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "@anthropic-ai/claude-code",
3-
"version": "2.1.146",
3+
"version": "2.1.148",
44
"author": {
55
"name": "Anthropic",
66
"email": "support@anthropic.com"
77
},
88
"license": "SEE LICENSE IN README.md",
9-
"_id": "@anthropic-ai/claude-code@2.1.146",
9+
"_id": "@anthropic-ai/claude-code@2.1.148",
1010
"maintainers": [
1111
{
1212
"name": "zak-anthropic",
@@ -73,20 +73,20 @@
7373
"claude": "bin/claude.exe"
7474
},
7575
"dist": {
76-
"shasum": "2067df984dac3300def6558749a92565981eedfa",
77-
"tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.146.tgz",
76+
"shasum": "33bc1100d6200de08744f0aa9063d26f055d2b7f",
77+
"tarball": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.148.tgz",
7878
"fileCount": 7,
79-
"integrity": "sha512-1XaW5RY1enQYlZCoAPnXI3hxchpMR3PfCozFCNHEjTZKIeevjFyBAUMYdzd35EB3fGIn89D5R7HKcztpnG0FPg==",
79+
"integrity": "sha512-D+trSAHw7kPBX77Zzm95Si87Sk2K4OPALRbI4TO095OSSa2pLGsLQBiccuuWNKLpItUSd1sWdkmMLuvdHHustQ==",
8080
"signatures": [
8181
{
82-
"sig": "MEUCIQCzJKZO2PkdCmKXmky2m+9ugkV5lBMIf21vT6790d0BlAIgT33fwSXQAh54adwOYg76McM4aFER1arIkTCy7lR3pos=",
82+
"sig": "MEUCIDRVaXTc0uKmYTBKNP7UMA36Yl3nYsXMmeshRHH0lZspAiEA0dpya1TC7UdKjNd9y/uRDFX1aOlOoHrx7wKgRx7Nt70=",
8383
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
8484
}
8585
],
8686
"unpackedSize": 136524
8787
},
8888
"type": "module",
89-
"_from": "file:staged-npm/anthropic-ai-claude-code-2.1.146.tgz",
89+
"_from": "file:staged-npm/anthropic-ai-claude-code-2.1.148.tgz",
9090
"engines": {
9191
"node": ">=18.0.0"
9292
},
@@ -98,8 +98,8 @@
9898
"name": "wolffiex",
9999
"email": "wolffiex@anthropic.com"
100100
},
101-
"_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.146.tgz",
102-
"_integrity": "sha512-1XaW5RY1enQYlZCoAPnXI3hxchpMR3PfCozFCNHEjTZKIeevjFyBAUMYdzd35EB3fGIn89D5R7HKcztpnG0FPg==",
101+
"_resolved": "/home/runner/work/claude-cli-internal/claude-cli-internal/staged-npm/anthropic-ai-claude-code-2.1.148.tgz",
102+
"_integrity": "sha512-D+trSAHw7kPBX77Zzm95Si87Sk2K4OPALRbI4TO095OSSa2pLGsLQBiccuuWNKLpItUSd1sWdkmMLuvdHHustQ==",
103103
"_npmVersion": "11.12.1",
104104
"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.",
105105
"directories": {},
@@ -108,17 +108,17 @@
108108
"_hasShrinkwrap": false,
109109
"readmeFilename": "README.md",
110110
"optionalDependencies": {
111-
"@anthropic-ai/claude-code-linux-x64": "2.1.146",
112-
"@anthropic-ai/claude-code-win32-x64": "2.1.146",
113-
"@anthropic-ai/claude-code-darwin-x64": "2.1.146",
114-
"@anthropic-ai/claude-code-linux-arm64": "2.1.146",
115-
"@anthropic-ai/claude-code-win32-arm64": "2.1.146",
116-
"@anthropic-ai/claude-code-darwin-arm64": "2.1.146",
117-
"@anthropic-ai/claude-code-linux-x64-musl": "2.1.146",
118-
"@anthropic-ai/claude-code-linux-arm64-musl": "2.1.146"
111+
"@anthropic-ai/claude-code-linux-x64": "2.1.148",
112+
"@anthropic-ai/claude-code-win32-x64": "2.1.148",
113+
"@anthropic-ai/claude-code-darwin-x64": "2.1.148",
114+
"@anthropic-ai/claude-code-linux-arm64": "2.1.148",
115+
"@anthropic-ai/claude-code-win32-arm64": "2.1.148",
116+
"@anthropic-ai/claude-code-darwin-arm64": "2.1.148",
117+
"@anthropic-ai/claude-code-linux-x64-musl": "2.1.148",
118+
"@anthropic-ai/claude-code-linux-arm64-musl": "2.1.148"
119119
},
120120
"_npmOperationalInternal": {
121-
"tmp": "tmp/claude-code_2.1.146_1779308053475_0.8541320598611926",
121+
"tmp": "tmp/claude-code_2.1.148_1779408601979_0.09446857852269042",
122122
"host": "s3://npm-registry-packages-npm-production"
123123
}
124124
}

content/en/agents-and-tools/mcp-tunnels/console.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Create tunnels, register CA certificates, retrieve the tunnel token, and attach
55
---
66

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

1111
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.

content/en/agents-and-tools/mcp-tunnels/deploy-compose.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Install the MCP tunnel stack on a VM using Docker Compose.
55
---
66

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

1111
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.
@@ -103,7 +103,7 @@ The `setup` service uses Workload Identity Federation to fetch the tunnel token,
103103
environment:
104104
- TUNNEL_TOKEN
105105
# Share the proxy's netns so localhost:8080 reaches it.
106-
network_mode: "service:mcp-gateway"
106+
network_mode: "service:mcp-proxy"
107107
restart: unless-stopped
108108
user: "65532:65532"
109109
read_only: true
@@ -117,10 +117,10 @@ The `setup` service uses Workload Identity Federation to fetch the tunnel token,
117117
max-size: "10m"
118118
max-file: "3"
119119

120-
mcp-gateway:
120+
mcp-proxy:
121121
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
122122
volumes:
123-
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
123+
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
124124
- ./data:/data:ro
125125
restart: unless-stopped
126126
user: "65532:65532"
@@ -195,7 +195,7 @@ The `setup` service uses Workload Identity Federation to fetch the tunnel token,
195195
`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.
196196

197197
```bash
198-
cat > config/mcp-gateway.yaml <<EOF
198+
cat > config/mcp-proxy.yaml <<EOF
199199
listen_addr: ":8080"
200200
log_level: info
201201
shutdown_timeout: 30s
@@ -292,7 +292,7 @@ Use this flow if you didn't turn on **Set up programmatic access**, or for local
292292
`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.
293293

294294
```bash
295-
cat > config/mcp-gateway.yaml <<EOF
295+
cat > config/mcp-proxy.yaml <<EOF
296296
listen_addr: ":8080"
297297
log_level: info
298298
tunnel_domain: ${TUNNEL_DOMAIN}
@@ -321,7 +321,7 @@ Use this flow if you didn't turn on **Set up programmatic access**, or for local
321321
environment:
322322
- TUNNEL_TOKEN
323323
# Share the proxy's netns so localhost:8080 reaches it.
324-
network_mode: "service:mcp-gateway"
324+
network_mode: "service:mcp-proxy"
325325
restart: unless-stopped
326326
user: "65532:65532"
327327
read_only: true
@@ -335,10 +335,10 @@ Use this flow if you didn't turn on **Set up programmatic access**, or for local
335335
max-size: "10m"
336336
max-file: "3"
337337

338-
mcp-gateway:
338+
mcp-proxy:
339339
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
340340
volumes:
341-
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
341+
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
342342
- ./data:/data:ro
343343
restart: unless-stopped
344344
user: "65532:65532"

content/en/agents-and-tools/mcp-tunnels/deploy-helm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Install the MCP tunnel stack on a Kubernetes cluster using the Anthropic Helm ch
55
---
66

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

1111
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).

content/en/agents-and-tools/mcp-tunnels/quickstart.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Connect Claude to a private MCP server using a local Docker Compose deployment.
55
---
66

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

1111
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).
@@ -155,7 +155,7 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
155155
<Tabs>
156156
<Tab title="macOS / Linux">
157157
```bash
158-
cat > config/mcp-gateway.yaml <<EOF
158+
cat > config/mcp-proxy.yaml <<EOF
159159
listen_addr: ":8080"
160160
tunnel_domain: ${TUNNEL_DOMAIN}
161161
tls:
@@ -167,10 +167,10 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
167167

168168
cat > docker-compose.yaml <<'EOF'
169169
services:
170-
mcp-gateway:
170+
mcp-proxy:
171171
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
172172
volumes:
173-
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
173+
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
174174
- ./data:/data:ro
175175
restart: unless-stopped
176176

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

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

207207
@'
208208
services:
209-
mcp-gateway:
209+
mcp-proxy:
210210
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:6b9adedbf2763143ec72f106ecaf0ce7fd3294e89b208f54a1db97a33d14c5ba
211211
volumes:
212-
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
212+
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
213213
- ./data:/data:ro
214214
restart: unless-stopped
215215

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

224224
hello-mcp:
@@ -239,14 +239,14 @@ A three-container stack on your machine: a sample MCP server, the tunnel proxy,
239239
<Tab title="macOS / Linux">
240240
```bash
241241
docker compose up -d
242-
docker compose logs mcp-gateway | grep "route configured"
242+
docker compose logs mcp-proxy | grep "route configured"
243243
docker compose logs cloudflared | grep "Registered tunnel connection"
244244
```
245245
</Tab>
246246
<Tab title="Windows (PowerShell)">
247247
```powershell
248248
docker compose up -d
249-
docker compose logs mcp-gateway | Select-String "route configured"
249+
docker compose logs mcp-proxy | Select-String "route configured"
250250
docker compose logs cloudflared | Select-String "Registered tunnel connection"
251251
```
252252
</Tab>

content/en/agents-and-tools/mcp-tunnels/reference.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Proxy configuration fields, the Tunnels REST API, certificate requirements, and
55
---
66

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

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

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

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

0 commit comments

Comments
 (0)