What's new in Claude Code v2.1.129
Claude Code v2.1.129 fixes the 1-hour prompt cache silent downgrade, restores Bash allow-rules for in-project paths, and adds --plugin-url for session-scoped plugin testing — plus new env vars for terminal output, package-manager auto-update, and gateway-model-discovery opt-in.
1-hour prompt cache TTL silent downgrade fixed
Why: Users opting into 1h cache TTL were silently being downgraded to 5min, defeating the cost optimization they paid for.
What: Fixed 1-hour prompt cache TTL being silently downgraded to 5 minutes.
How: No action — verify cache hit logs show 1h TTL on next run.
Bash(mkdir *), Bash(touch *) allow rules now match in-project paths
Why: Allow rules for safe basic commands weren't matching in-project paths, forcing approval prompts for benign operations.
What: Bash(mkdir *), Bash(touch *) and similar allow rules now match in-project paths.
How: No config change — existing rules in permissions.allow start working as intended.
--plugin-url for session-scoped plugin .zip loading
Why: Quick-testing a plugin used to mean cloning the repo or hosting a marketplace; pointing at a hosted .zip is faster.
What: New --plugin-url flag fetches a plugin .zip from any URL and loads it for the current session only.
How: claude --plugin-url https://example.com/my-plugin.zip
Plugin manifest themes/monitors move under "experimental"
Why: These were always experimental; nesting under experimental makes their stability status explicit in the manifest.
What: themes and monitors should now be declared under "experimental": { ... }. Top-level still works but claude plugin validate warns.
How: Move to "experimental": { "themes": [...], "monitors": [...] } in plugin.json.
CLAUDE_CODE_FORCE_SYNC_OUTPUT for terminals auto-detection misses
Why: Some terminals like Emacs eat support synchronized output but aren't auto-detected, causing visual flicker.
What: Forces synchronized output on regardless of terminal capability detection.
How: CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 claude
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE for Homebrew and WinGet
Why: Users on Homebrew or WinGet installs forget to run upgrades; auto-update keeps them current without ceremony.
What: When set, Claude Code runs the package manager's upgrade command in the background and prompts to restart.
How: export CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 in shell env.
Ctrl+R history picker defaults back to all projects
Why: 2.1.124 narrowed the picker to current project only; users wanted the old all-projects search restored.
What: Ctrl+R now searches prompts across all projects, matching pre-2.1.124 behavior.
How: Press Ctrl+S after opening to narrow to current project or session.
Gateway /v1/models discovery now opt-in
Why: Automatic gateway model discovery in 2.1.126–2.1.128 caused unexpected requests for some third-party deployments.
What: Gateway /v1/models discovery for the /model picker is now opt-in via env var.
How: CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 to re-enable.
skillOverrides setting now actually works
Why: The setting was registered but had no effect — silent noise in settings.json until now.
What: off hides the skill from model and /, user-invocable-only hides from model only, name-only collapses description.
How: "skillOverrides": { "skill-name": "off|user-invocable-only|name-only" } in settings.json.
/context no longer dumps ASCII visualization into conversation
Why: /context was rendering its ASCII grid into the conversation transcript, wasting ~1.6k tokens per call.
What: Visualization grid is no longer included in the model's view of the conversation.
How: No action required — token waste disappears automatically.
OTel pull_request.count now includes MCP-created PRs
Why: PRs created via MCP tools weren't counted, undercounting team productivity metrics for OTel-instrumented orgs.
What: claude_code.pull_request.count metric now counts PRs/MRs created via MCP tools, not just shell commands.
How: No config change — automatic when OTel telemetry is enabled.
Hosts: Alex Chen & Sarah Kim · Generated from the official Claude Code CHANGELOG.
Full changelog: github.com/anthropics/claude-code/CHANGELOG.md
Claude Code docs: docs.claude.com/en/docs/claude-code
- (00:00) - 1-hour prompt cache TTL silent downgrade fixed
(01:00) - Bash allow rules now honor in-project paths(01:38) - --plugin-url flag(02:13) - Plugin manifest themes/monitors under experimental(02:38) - CLAUDE_CODE_FORCE_SYNC_OUTPUT(03:07) - CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE(03:32) - Ctrl+R history picker defaults to all projects(04:02) - Gateway /v1/models discovery now opt-in(04:43) - skillOverrides setting now actually works(05:17) - /context no longer dumps ASCII into conversation(05:46) - OTel pull_request.count counts MCP-created PRs