/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"
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:"