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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
350 changes: 182 additions & 168 deletions content/.metadata.json

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions content/claude/cowork/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,26 @@

> Release notes for Claude Desktop

<Update label="v1.52386.6" description="2026-09-13">
**General**

* Updated the bundled Claude Code CLI to version 2.1.270.
* Fixed organization plugins enabled through Claude Code's managed settings not loading; they load from the next session.
* Fixed sessions with a very large prompt getting permanently stuck on a "Prompt is too long" error.

**Code**

* Fixed users sometimes being told a model they have access to is restricted, and a running session silently switching to the organization's default model.

**Cowork**

* No user-facing changes.

**3P**

* No user-facing changes.
</Update>

<Update label="v1.52386.3" description="2026-09-11">
**General**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

Configuration keys by Claude Desktop release. Each section lists keys added in that release, with the MDM key name (for plist/registry deployment) and the equivalent JSON shape (for local-file or bootstrap remote configuration).

<Update label="v1.52386.6" description="2026-09-13">
No configuration changes in this release.
</Update>

<Update label="v1.52386.3" description="2026-09-11">
No configuration changes in this release.
</Update>
Expand Down
23 changes: 13 additions & 10 deletions content/en/docs/claude-code/advisor.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,24 +85,27 @@ If you start a [background session](/docs/en/agent-view) with `--advisor` and on

The advisor must be at least as capable as the main model. The accepted advisors for each main model are:

| Main model | Accepted advisors | Notes |
| -------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Haiku 4.5 | Fable, Opus, Sonnet | Haiku can call the advisor but cannot act as one |
| Sonnet 4.6 | Fable, Opus, Sonnet | |
| Sonnet 5 | Fable, Opus, Sonnet 5 | A Sonnet 4.6 advisor is rejected |
| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 and Opus 4.6 are ranked as equally capable, so an Opus 4.6 main accepts a Sonnet 5 advisor |
| Opus 4.7 or later | Fable, and Opus 4.7 or later | Opus 4.7 and later Opus models are ranked as equally capable, so any of them accepts another as an advisor. An Opus 4.7 main with an Opus 4.6 or Sonnet 5 advisor is rejected |
| Fable 5.1 or Fable 5 | Fable 5.1 or Fable 5 | An Opus or Sonnet advisor is rejected |
| Main model | Accepted advisors | Notes |
| -------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Haiku 4.5 | Fable, Opus, Sonnet | Haiku can call the advisor but cannot act as one |
| Sonnet 4.6 | Fable, Opus, Sonnet | |
| Sonnet 5 | Fable, Opus 4.7 or later, Sonnet 5 | A Sonnet 4.6 advisor is rejected, and requests with an Opus 4.6 advisor fail with an API error |
| Opus 4.6 | Fable, Opus, Sonnet 5 | A Sonnet 4.6 advisor is rejected |
| Opus 4.7 or Opus 4.8 | Fable, and Opus 4.7 or later | An Opus 4.6 or Sonnet advisor is rejected |
| Opus 5 | Fable, Opus 5 | An Opus 4.6 or Sonnet advisor is rejected, and requests with an Opus 4.7 or Opus 4.8 advisor fail with an API error |
| Fable 5 | Fable 5.1 or Fable 5 | An Opus or Sonnet advisor is rejected |
| Fable 5.1 | Fable 5.1 | An Opus or Sonnet advisor is rejected, and requests with a Fable 5 advisor fail with an API error |

Fable 5.1 requires Claude Code v2.1.257 or later. Both Fable models require [Fable access](/docs/en/model-config#work-with-fable).

Set the advisor as `fable`, `opus`, or `sonnet`. These aliases resolve to Claude Code's built-in default version for each model family, which advances with new Claude Code releases. You can also pass a full model ID such as `claude-opus-5`.

Subagents inherit the configured advisor and apply the same pairing check against their own model.

Claude Code validates the pairing before sending a request:
Claude Code validates the pairing before sending a request, and the API validates it again:

* If the advisor is less capable than the main model, the advisor is not attached to the main model's requests. The `/advisor` command output and a notification show this. Subagents whose own model satisfies the pairing may still use the advisor.
* For an advisor the table lists as rejected, Claude Code doesn't attach it to the main model's requests. The `/advisor` command output and a notification show this. Subagents whose own model satisfies the pairing may still use the advisor.
* For an advisor the table lists as failing with an API error, Claude Code attaches it and the API refuses it. Every request fails with `'<advisor model>' cannot be used as an advisor when the request model is '<main model>'` until you change the advisor with `/advisor` or turn it off.
* If the main model or the advisor is a model Claude Code does not recognize, the advisor is not attached.

### Fable advisor and usage credits
Expand Down
2 changes: 0 additions & 2 deletions content/en/docs/claude-code/agent-sdk/claude-code-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,6 @@ The SDK supports two ways to define hooks, and they run side by side:
* **Filesystem hooks:** shell commands defined in `settings.json`, loaded when `settingSources` includes the relevant source. These are the same hooks you'd configure for [interactive Claude Code sessions](/docs/en/hooks-guide).
* **Programmatic hooks:** callback functions passed directly to `query()`. These run in your application process and can return structured decisions. See [Control execution with hooks](/docs/en/agent-sdk/hooks).

Both types execute during the same hook lifecycle. If you already have hooks in your project's `.claude/settings.json` and you set `settingSources: ["project"]`, those hooks run automatically in the SDK with no extra configuration.

Hook callbacks receive the tool input and return a decision dict. Returning `{}` means allow the tool to proceed. To block execution, return a `hookSpecificOutput` object with `permissionDecision: "deny"` and a `permissionDecisionReason`. The reason is sent to Claude as the tool result. See the [hooks guide](/docs/en/agent-sdk/hooks) for the full callback signature and return types.

<CodeGroup>
Expand Down
9 changes: 4 additions & 5 deletions content/en/docs/claude-code/agent-sdk/hooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -557,9 +557,9 @@ Use `SubagentStop` hooks to monitor when subagents finish their work. See the fu

### Make HTTP requests from hooks

Hooks can perform asynchronous operations like HTTP requests. Catch errors inside your hook instead of letting them propagate, since an unhandled exception can interrupt the agent.
Hooks can perform asynchronous operations like HTTP requests. Catch errors inside your hook instead of letting them propagate.

This example sends a webhook after each tool completes, logging which tool ran and when. The hook catches errors so a failed webhook doesn't interrupt the agent:
This example sends a webhook after each tool completes, logging which tool ran and when. The hook catches errors from a failed webhook:

<CodeGroup>
```python Python theme={null}
Expand Down Expand Up @@ -595,7 +595,7 @@ This example sends a webhook after each tool completes, logging which tool ran a
# Run the blocking HTTP call in a thread to avoid blocking the event loop
await asyncio.to_thread(_send_webhook, input_data["tool_name"])
except Exception as e:
# Log the error but don't raise. A failed webhook shouldn't stop the agent
# Log the error but don't raise
print(f"Webhook request failed: {e}")

return {}
Expand Down Expand Up @@ -624,7 +624,7 @@ This example sends a webhook after each tool completes, logging which tool ran a
if (error instanceof Error && error.name === "AbortError") {
console.log("Webhook request cancelled");
}
// Don't re-throw. A failed webhook shouldn't stop the agent
// Don't re-throw
}

return {};
Expand Down Expand Up @@ -849,7 +849,6 @@ When spawning multiple subagents, each one may request permissions separately fo

A `UserPromptSubmit` hook that spawns subagents can create infinite loops if those subagents trigger the same hook. To prevent this:

* Check for a subagent indicator in the hook input before spawning
* Use a shared variable or session state to track whether you're already inside a subagent
* Scope hooks to only run for the top-level agent session

Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/claude-code/agent-sdk/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Claude Code registers the servers you pass in `options.mcpServers` at startup an
| :------------------------------------------------------------------------------------- | :----------------------------------------------------- | :------------------------------------------------------------------------------------------ |
| stdio server, or HTTP/SSE server without a cached tool list | Yes, until it connects | [`MCP_TIMEOUT`](/docs/en/env-vars), 30 seconds by default; the connection fails at that deadline |
| Remote server with a cached tool list, saved by Claude Code from a previous connection | No; the cached tools are available from the first turn | None; connects on its first tool call, and that deferred connect has its own timeout |
| In-process [SDK server](#sdk-mcp-servers) | No; never delays the first turn | None |
| In-process [SDK server](#sdk-mcp-servers) | Yes, until it connects and lists its tools | None; the connect and tool listing requests each have their own timeout |

To block startup itself at a separate, earlier phase than the first-turn wait, before the init message is sent:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ Once created, activate output styles via:
const options = { settings: { outputStyle: "Explanatory" } };
```

The Python SDK does not have an option to select an output style programmatically. For code-only deployments where you can't write to `.claude/settings.local.json`, use `append` or a custom prompt string instead.
In the Python SDK, set `outputStyle` through the `settings` option, which takes a JSON string such as `'{"outputStyle": "Explanatory"}'` or a path to a settings file that sets it.

**Note for SDK users:** Output styles are loaded when you include `settingSources: ['user']` or `settingSources: ['project']` (TypeScript) / `setting_sources=["user"]` or `setting_sources=["project"]` (Python) in your options.

Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/claude-code/agent-sdk/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The Agent SDK, the CLI, the Client SDK, and Managed Agents each fit different ne

| If you're... | Use | Why |
| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Building an agent without implementing the tool loop yourself | **Agent SDK** | A library that runs the agent loop in your own process, in Python or TypeScript. |
| Building an agent without implementing the tool loop yourself | **Agent SDK** | A Python or TypeScript library that runs the agent loop for you. |
| Doing interactive development or running one-off tasks from a terminal | [**Claude Code CLI**](/docs/en/overview) | The terminal interface, built for daily interactive use. |
| Calling the API directly and implementing the tool loop yourself | [**Client SDK**](https://platform.claude.com/docs/en/api/client-sdks) | Direct access to the Anthropic API rather than to Claude Code. You implement the tool loop yourself. |
| Running long-running or asynchronous agents without managing your own sandbox or session infrastructure | [**Managed Agents**](https://platform.claude.com/docs/en/managed-agents/overview) | Hosted REST API, a separate product from the Agent SDK. Anthropic runs the agent and the sandbox. |
Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/claude-code/agent-sdk/plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ To use a plugin distributed through a [marketplace](/docs/en/plugin-marketplaces

Plugin paths can be:

* **Relative paths**: resolved relative to your current working directory (for example, `"./plugins/my-plugin"`)
* **Relative paths**: resolved relative to the `cwd` option (for example, `"./plugins/my-plugin"`)
* **Absolute paths**: full file system paths (for example, `"/home/user/plugins/my-plugin"`)

<Note>
Expand Down
Loading
Loading