← All changelogs v2.1.182 claude · claude-sonnet-4-6
Claude Code · Source-level changelog

Version 2.1.182

Version 2.1.182 introduces /migrate, a new command for importing configuration from OpenAI Codex and Google Gemini CLI into Claude Code — covering MCP servers, slash commands, subagents, skills, and instruction files with path-safety guards and a dry-run preview mode. The release also adds a built-in /artifact-design skill for structured UI design, a disableClaudeAiConnectors setting to block auto-fetching of cloud MCP connectors, a git.sessionUrl setting to control whether session links appear in commits and PRs, and a CLAUDE_CODE_CONNECT_TIMEOUT_MS environment variable for streaming time-to-first-byte timeouts.

Package @anthropic-ai/claude-code Diff v2.1.181 → v2.1.182Provider claudeModel claude-sonnet-4-6
19
Features & Changes
5
Bug Fixes
0
In Development
0
Env Vars / Flags

New Features

6 items

/migrate — Import config from Codex or Gemini CLI #

New
What

A new slash command and CLI subcommand that scans for OpenAI Codex or Google Gemini CLI configuration and imports compatible items into Claude Code.

Usage
# Interactive TUI picker (terminal only)
claude migrate

# Import from a specific agent
claude migrate codex
claude migrate gemini

# Preview without writing anything
claude migrate --dry-run

# Non-interactive: auto-import user-level items (skips ⚠-flagged and project-level items)
claude migrate --yes
claude migrate codex --yes --dry-run

Or from inside a session:

/migrate
/migrate codex --dry-run
/migrate --yes
Details
  • Detects Codex config at ~/.codex/config.toml, ~/.codex/AGENTS.md, ~/.codex/prompts/, and .codex/config.toml in the current project
  • Detects Gemini CLI config at ~/.gemini/settings.json, ~/.gemini/GEMINI.md, ~/.gemini/commands/, and GEMINI.md / .gemini/ in the current project
  • Importable item types: MCP servers, slash commands, subagents, skill directories, and instruction files (AGENTS.md / AGENTS.override.md / GEMINI.md → CLAUDE.md)
  • Items requiring extra review are flagged with ⚠ and held back by --yes; they can be individually toggled in the terminal checkbox picker
  • Project-level config (from .codex/ or .gemini/ in the repo) is detected and listed but never auto-imported — project config can be authored by anyone with write access to that repo. Run claude migrate from a terminal to review project items individually
  • Items that cannot be mapped automatically (hooks, sandbox settings, named profiles, Gemini extensions) generate a /migrate-to-claude-code fallback skill listing each one with guidance
  • On surfaces without an interactive picker, /migrate asks Claude to summarize what was found and guide the user to run --yes or use the terminal
  • Path-traversal guards prevent importing files that escape the config directory (symlinks and .. components are rejected)
  • Files exceeding the size limit are refused with "file exceeds MIGRATE_MAX_FILE_BYTES; refusing to load"
Evidence

Full migration subsystem — search for "Import config from another AI coding agent (Codex, Gemini CLI)" and "claude migrate [codex|gemini] [--dry-run] [--yes]"

/artifact-design — Built-in design skill for Artifacts #

New
What

A new built-in skill that provides comprehensive design guidance for building distinctive, production-grade frontend pages published as claude.ai Artifacts.

Usage
/artifact-design
Details
  • Guides a two-pass design process: (1) brainstorm a compact token system — 4–6 named hex values, 2+ typeface roles, a layout concept with ASCII wireframes; (2) critique the plan against the subject before building, revise anything that reads as a generic default, then build from the revised plan exactly
  • Design principles: hero as a thesis, typography as personality, structure as information, deliberate motion (one orchestrated moment), copy as design material
  • Includes a palette-commit format (<palette_commit> block) to pin color decisions before writing CSS
  • References three common AI design defaults to avoid (warm cream + high-contrast serif + terracotta; dark + acid-green; broadsheet hairlines) when the user has not specified a visual direction
  • User-invocable on all surfaces that support skills
Evidence

New artifact-design skill definition — search for "artifact-design" or "Design guidance for Artifact pages — process, principles, palette, copy."

disableClaudeAiConnectors Setting #

New
What

A new boolean setting that prevents Claude Code from automatically fetching and connecting claude.ai MCP cloud connectors.

Details
  • Set in any settings source:
  { "disableClaudeAiConnectors": true }
  • Any-source-true wins: a project can opt out (set true), but a project-level false cannot override a user-level true
  • Only gates auto-fetched connectors; a claudeai-proxy server passed explicitly via --mcp-config or the SDK mcpServers option still follows the normal MCP config trust flow
  • Useful for air-gapped environments, strict compliance setups, or projects requiring explicit MCP server control
Evidence

New settings schema field — search for "When true in any settings source, claude.ai MCP cloud connectors are not auto-fetched or connected."

attribution.sessionUrl Setting #

New
What

Controls whether Claude Code appends a claude.ai session link to commits and pull requests created during web or Remote Control sessions.

Details
  • Set in settings.json under the attribution key:
  { "attribution": { "sessionUrl": false } }
  • Default is true — the Claude-Session commit trailer and PR-body link are added automatically
  • Set to false to omit both the trailer and the link (useful for organizations that want clean commit history or disallow external links in PRs)
Evidence

New settings schema field — search for "Whether to append the claude.ai session link to commits and PRs created from web or Remote Control sessions"

CLAUDE_CODE_CONNECT_TIMEOUT_MS — Streaming time-to-first-byte timeout #

New
What

A new environment variable that sets a hard timeout for receiving the first response headers on streaming API calls. When the API does not return headers within the configured time, the request is aborted with a clear error instead of hanging.

Usage
CLAUDE_CODE_CONNECT_TIMEOUT_MS=15000 claude   # abort if no headers within 15 s
Details
  • Applies only to streaming requests (event-stream, Bedrock eventstream, :streamRawPredict paths)
  • Error message: "Request timed out: no response headers after 15s (CLAUDE_CODE_CONNECT_TIMEOUT_MS)"
  • Warning logged: "[TTFB] no response headers after Nms — aborting (CLAUDE_CODE_CONNECT_TIMEOUT_MS)"
  • Previously there was no way to configure a TTFB timeout; streaming requests would wait indefinitely for the first byte before any timeout applied
Evidence

New yVu() function and timeout logic — search for "CLAUDE_CODE_CONNECT_TIMEOUT_MS" and "[TTFB] no response headers after"

MCP resources/directory/read Support #

New
What

Claude Code now supports MCP servers that implement directory listing via the io.modelcontextprotocol/skills protocol extension, enabling skill-serving MCP servers to expose navigable directory structures.

Details
  • MCP servers advertise the capability via extensions["io.modelcontextprotocol/skills"].directoryRead: true
  • Claude can list directory contents at a URI and descend into subdirectories; subdirectories appear with mimeType: "inode/directory"
  • When a skill at a URI references a supporting file by relative path (e.g. templates/invoice.md), Claude is told to call the MCP read tool with the full composed URI rather than reading locally
  • Cursor-based pagination is handled automatically; an InvalidParams error mid-pagination returns prior-page results with a warning rather than throwing
  • URI sanitization strips Unicode control characters, private-use codepoints, and bidirectional markers to prevent path confusion
Evidence

New mZi() directory-read function — search for "readMcpDirectory called on a server without directoryRead capability" and "resources/directory/read"

Improvements

13 items

Fable Model Disabled State — Clearer Messaging #

New

When Fable is unavailable because your organization has not provisioned usage credits, it now appears in the model picker as "Fable (disabled)" instead of a selectable option, with the label "— contact your admin to turn on usage credits".

Contextual messages are also now more specific by plan type:

  • Team plan: "Run /usage-credits to request more from your admin, or switch models to keep working."
  • Individual: "Buy more to keep using Fable, or switch models to keep working."
  • When /usage-credits is disabled via env: "Switch models to keep working."
Evidence

New YCd() and Xwn() functions — search for "Fable (disabled)" and "contact your admin to turn on usage credits"

Legacy Model Remapping — Clearer Warning and Opt-Out #

New

When Claude Code automatically remaps a deprecated model ID to a current one, the warning now includes the model name being used and mentions the opt-out env var:

Before: ⚠ Claude Opus 4.7 has been updated to claude-opus-4-8.

After: ⚠ claude-opus-4-7 is automatically remapped to Claude Opus 4.8 (claude-opus-4-8). Set CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP=1 to keep the requested model.

Also, the status-line model indicator now shows the same opt-out hint in shortened form: ⚠ Opus 4.7 remaps to Claude Opus 4.8. CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP=1 opts out.

Evidence

Modified DCo() and new lzn() functions — search for "is automatically remapped to" and "CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP=1 opts out"

Auto-Compact Diff — Branch Changes Context #

New

The compact view's diff header now distinguishes between uncommitted working-tree changes and changes on a feature branch relative to its upstream base:

  • Working-tree only → Uncommitted changes (git diff HEAD)
  • Branch relative to upstream → Branch changes (vs main)
Evidence

Modified compact diff function — search for "Branch changes"

Linux Sandbox Bridge Error — Actionable Message #

New

When the Linux sandbox's socat bridge socket disappears (e.g., because socat died), Claude Code now raises a named SandboxBridgeUnavailableError with a clear message instead of an opaque socket error:

Linux sandbox SOCKS bridge socket is missing (socat may have died). Restart to retry.

Evidence

New SandboxBridgeUnavailableError class — search for "SandboxBridgeUnavailableError" or "bridge socket is missing (socat may have died)"

Agent Proxy CA Certificate Installed to Linux System Trust #

New

When the CCR agent proxy runs on Linux, Claude Code now attempts to install its CA certificate into the system-level certificate store in addition to using environment variable trust. Supports:

  • Debian/Ubuntu: /usr/local/share/ca-certificates/ccr-agent-proxy.crt + update-ca-certificates
  • RHEL/CentOS: /etc/pki/ca-trust/source/anchors/ccr-agent-proxy.crt + update-ca-trust extract

Falls back to env-var trust if the system install fails. A notification is logged when system trust succeeds: [agent-proxy] CA installed to system trust via update-ca-certificates.

Evidence

New Bjl() function — search for "[agent-proxy] CA installed to system trust via" and "/etc/pki/ca-trust/source/anchors"

Design MCP Connector Scope Auto-Expansion #

New

When a session accesses the Design MCP connector (/v1/design/ paths), Claude Code now automatically requests the required user:design:read and user:design:write OAuth scopes if not already present. A one-time notification is shown when the scopes are added:

Added user:design:read and user:design:write to your claude.ai login (for the Design MCP connector).

Evidence

New EWd() function — search for "Added user:design:read and user:design:write to your claude.ai login"

MCP Per-Server Permission Mode Override (Control Channel) #

New

The MCP control channel now supports a tighten-only per-server permission mode override. Orchestration layers can downgrade specific MCP server permissions to 'default' (or clear the override with null) without a full session restart. Escalation attempts (e.g., setting 'auto') are rejected:

Permission mode override over the control channel is tighten-only ('default' or null); rejected 'auto'

Evidence

New Qta() function — search for "set_mcp_permission_mode_override" and "tighten-only"

Team Memory Index Size Warning #

New

When a team memory index file is approaching or exceeding its read limit (configurable via promptIndexMaxBytes), Claude now surfaces a contextual warning during reads:

The memory index at team/[mount]/[path] is [size], approaching the [limit] read limit — content beyond that is dropped when this index is loaded. Compact it to under [target] now: keep one line per entry, move detail into topic files, and merge or drop stale entries.

Evidence

New FXa() function — search for "Compact it to under" and "approaching the" with "read limit"

In-Process Teammate Resume — Improved Reliability #

New

Resuming an in-process teammate now:

  • Verifies the team context is active before attempting resume, with a clear error: "Cannot resume teammate: no team is active in this session"
  • Checks team membership and reports missing teammates: "No teammate named 'X' is currently on team 'Y'. Spawn one with …"
  • Loads prior transcript and content replacements before spawning
  • Re-registers the teammate in the team file and lifecycle tracker after spawn
  • Drops stale protocol frames before delivering the new prompt
Evidence

New Lza() function — search for "resumeInProcessTeammate" and "Cannot resume teammate: no team is active in this session"

/doctor Hint on Setup Issue Count #

New

When Claude Code detects setup issues at startup (MCP failures, keybinding errors, etc.), the log message now appends "(run /doctor for details)" so users know how to investigate:

2 setup issues: settings, MCP (run /doctor for details)

Evidence

New dD() function — search for "run /doctor for details"

CCR WebSearch Proxy #

New

For Remote Control sessions with CLAUDE_CODE_WEBSEARCH_USE_CCR_PROXY=1 set, web searches are now routed through the Anthropic API's session WebSearch proxy (/worker/web-search) instead of directly to the search provider. Error messages from the proxy are surfaced clearly with type-specific descriptions.

Evidence

New L8a() function — search for "ccr websearch-proxy transport error" and "/worker/web-search"

Removed Repeated Tool Validation Schema Dump #

New

The feature that appended a verbose JSON schema dump to tool results after multiple consecutive InputValidationError responses (the "This call has now failed validation N times in a row. The tool's input schema is: …" message) has been removed. Tool input errors are now handled without the repeated schema echo, reducing noise and token consumption.

Evidence

Removed Bfi() function — search for removed string "This call has now failed validation"

SendUserFile Tool — Usage Example Added #

New

The SendUserFile tool description now includes a concrete example: Example: SendUserFile({ files: ["report.md"], caption: "Here's the report.", status: "normal" })

Evidence

Updated R5r string — search for "Example: SendUserFile({ files:"

Bug Fixes

5 items
  • Fixed extra keys on {type:'disabled'} thinking parameters being forwarded to the API (gh-68567). A leftover display field or similar on a disabled thinking config is now stripped before the request is sent, preventing API validation failures. (search for "extra key(s) from {type:'disabled'} thinking param (gh-68567)")
  • Fixed VirtualMessageList crash when the message array contains an undefined element. Bounds-checked access now emits a diagnostic error event with neighbor context instead of throwing. (search for "VirtualMessageList: undefined element in messages[]")
  • Fixed opaque socket errors when the Linux sandbox bridge dies. Claude Code now raises a named SandboxBridgeUnavailableError with the message "Linux sandbox [SOCKS|HTTP] bridge socket is missing (socat may have died). Restart to retry." (search for "SandboxBridgeUnavailableError")
  • Fixed input JSON failed to parse errors not including the payload size. The error message now reads input JSON failed to parse — N bytes, making it easier to diagnose oversized or malformed tool inputs. (search for "input JSON failed to parse —")
  • Fixed Codex never approval policy mapping: it is now explicitly mapped to auto permission mode with a warning explaining the sandbox difference, rather than being silently dropped. (search for "Codex \never\ relies on Codex's own sandbox")

Notes

The /migrate command's --yes flag imports only user-level items that have no ⚠ warning. Items flagged as requiring review — such as commands with shell exec (!{cmd}), MCP servers with repo-authored configs, or permission-mode escalations — are held back and must be reviewed individually via the terminal picker (claude migrate without --yes). Project-level items from .codex/ or .gemini/ in your repo are always held back in --yes mode because project config can be authored by anyone with write access to the repository.