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
335 changes: 178 additions & 157 deletions content/.metadata.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion content/claude/cowork/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Bundled Claude Code version: 2.1.309.
* Added a warning in Cowork, Chat and Code once a person has used 75% of the token limit set with `inferenceMaxTokensPerWindow` and `inferenceTokenWindowHours`. Set `inferenceTokenWarningPercent` (1 to 100) to change the percent. At the limit it reads “Token limit reached” and cannot be closed.
* Changed `managedMcpServers` entries with `server: "github"` so that `pull_request_review_write` asks before every call, comment-only reviews and thread resolves included, even when `toolPolicy` allows it. Where no prompt can be shown, the call is refused. `toolPolicy` can still block it.
* Changed a failed `PreToolUse` or `PermissionRequest` hook with `"shell": "powershell"` to block the call on PCs without Git for Windows unless it sets `args` or `"onFailure": "continue"`. If written for Bash: remove `shell`, add `"onFailure": "block"` to keep blocking, install Git, reopen Claude.
* Changed an unset `desktopHome` to open Unified Claude at launches after 12:00 PM PT on November 10, 2026. Where `coworkTabEnabled` is `false`, no feature turns on or off. With Cowork on, a set `chatSessionRetentionDays` without an equal `coworkSessionRetentionDays` keeps the current view.
* Changed an unset `desktopHome` to open Unified Claude at launches after 12:00 PM PT on November 10, 2026. With Cowork on, a set `chatSessionRetentionDays` without an equal `coworkSessionRetentionDays` keeps the current view.
* Changed an unset `desktopHome` with Cowork on to also turn on Chat and Advanced file analysis when it starts to open Unified Claude (November 10, 2026), even if `chatTabEnabled` or `chatAdvancedFileAnalysisEnabled` is `false`.
* Changed Chat, Cowork and Code sessions to no longer start while Claude’s provider connection settings are missing, invalid or not yet fetched from your organization’s server. Claude says so at once.
* Changed the Microsoft 365 connector to keep each saved sign-in per `tenantId`, `clientId`, `azureCloud` and `continuousAccessEvaluation`. Connected users sign in again once after this update. Where `microsoftAuthDefaultAccount` is `enabled` on Windows, they get the account picker from then on.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Configuration keys by Claude Desktop release. Each section lists keys added in t

**Changed:**

* `desktopHome`: from November 10, 2026 (12:00 PM PT, by the device's clock), an unset key opens Unified Claude at the app's next launch. Where `coworkTabEnabled` is not `false`, Chat and Advanced file analysis come on with Cowork, even if `chatTabEnabled` or `chatAdvancedFileAnalysisEnabled` is `false`. Where `coworkTabEnabled` is `false`, Cowork, Chat and Advanced file analysis stay on or off as they are today. A deployment with Cowork on that sets `chatSessionRetentionDays`, and does not set `coworkSessionRetentionDays` to the same number of days, keeps its current view. Earlier releases are unchanged.
* `desktopHome`: from November 10, 2026 (12:00 PM PT, by the device's clock), an unset key opens Unified Claude at the app's next launch. With Cowork on, Chat and Advanced file analysis come on too, even if `chatTabEnabled` or `chatAdvancedFileAnalysisEnabled` is `false`. A deployment with Cowork on that sets `chatSessionRetentionDays`, and does not set `coworkSessionRetentionDays` to the same number of days, keeps its current view. Earlier releases are unchanged.
* `inferenceModels`: an entry accepts `behavesAs`, the Claude model behind a Model ID that Claude Desktop cannot identify, such as a gateway alias. The ID then gets that model's effort levels and limits. Once any entry sets it, sessions that Claude Desktop starts no longer read a person's own `modelPicker` setting from Claude Code's settings.
* `managedMcpServers`: a remote entry accepts `defaultState`. Set it to `"off"` and the connector stays out of each person's sessions until they turn it on under Connectors in the + menu. Adding `"off"` to a connector in use turns it off for everyone who has not switched it on.
* `managedMcpServers`: a remote entry's `oauth` accepts `omitResource`. Set it to `true` when the identity provider rejects the OAuth `resource` parameter (Microsoft Entra ID: AADSTS9010010). It needs the entry's client ID, a scope that names the API, and exactly one sign-in server: a tenant ID, one authorization server, or an authorization URL and token URL. Otherwise the server is not loaded.
Expand Down
2 changes: 1 addition & 1 deletion content/claude/third-party/claude-desktop/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -1566,7 +1566,7 @@ One of: `standard`, `off`

> **More detail**
>
> `standard` turns on Unified Claude, which combines Chat and Cowork into one experience. `off` turns Chat and Cowork off entirely. `isClaudeCodeForDesktopEnabled` still decides Code. While the key is unset, `chatTabEnabled`, `chatAdvancedFileAnalysisEnabled`, and `coworkTabEnabled` decide until November 10, 2026 (12:00 PM PT). Current versions of Claude Desktop launched after that open Unified Claude for an unset key. Where `coworkTabEnabled` is not `false`, they read it as `standard`, whatever the other two say. Where it is `false`, Cowork stays off, and Chat and file analysis stay as the other two set them. Two cases keep those three keys deciding, as before that date. One: Cowork is allowed, `chatSessionRetentionDays` is set, and `coworkSessionRetentionDays` is not set to the same number of days. Two: Chat, Cowork, and `isClaudeCodeForDesktopEnabled` are all off, where the app turns one of them back on. Values are case-sensitive, so `Standard` is not recognized. A value that the app does not recognize is read as `off`, so update the app on devices before you deploy a value added in a later version.
> `standard` turns on Unified Claude, which combines Chat and Cowork into one experience. `off` turns Chat and Cowork off entirely. `isClaudeCodeForDesktopEnabled` still decides Code. While the key is unset, `chatTabEnabled`, `chatAdvancedFileAnalysisEnabled`, and `coworkTabEnabled` decide until November 10, 2026 (12:00 PM PT). Current versions of Claude Desktop launched after that open Unified Claude for an unset key. With Cowork on, they read it as `standard`, whatever `chatTabEnabled` and `chatAdvancedFileAnalysisEnabled` say. Two cases keep those three keys deciding, as before that date. One: Cowork is on, `chatSessionRetentionDays` is set, and `coworkSessionRetentionDays` is not set to the same number of days. Two: Chat, Cowork, and `isClaudeCodeForDesktopEnabled` are all off, where the app turns one of them back on. Values are case-sensitive, so `Standard` is not recognized. A value that the app does not recognize is read as `off`, so update the app on devices before you deploy a value added in a later version.

***

Expand Down
1 change: 1 addition & 0 deletions content/en/docs/claude-code/plugins/mods/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ After the user stops a running turn, for example with Esc, some work your mod ha
| A recurring job scheduled with a tool such as CronCreate that comes due before the user's next input | Starts no turn then. The job loses that run and keeps its schedule. | Nothing needed |
| An event from a monitor your mod started | The monitor keeps running. An event the monitor raises before the user's next input is dropped, except the notice that the monitor ended, which arrives after that input. | Nothing can be done |
| A subagent your mod spawned and later resumed with `$.session.send` that finishes before the user's next input | Its finish notice waits, and reaches the conversation after that input | Nothing needed |
| A foreground Bash or PowerShell command from `$.tool.call` that was already running when the user stopped the turn and reaches its timeout before their next input | Stopped at its timeout instead of [moving to the background](https://code.claude.com/docs/en/tools-reference.md#foreground-commands-that-move-to-the-background). The call resolves with `isError` set, and the output includes the line `Ended instead of moving to the background: plugins' input is held, by a Stop or by the host's limits.` | Run it again after the user's next input, as [Retry a refused or dropped call](#retry-a-refused-or-dropped-call) shows |

When a scheduled job comes due or a monitor raises an event before the user's next input, the user can see the [`Stopped:` toast](https://code.claude.com/docs/en/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

Expand Down
4 changes: 2 additions & 2 deletions content/github/claude-cookbooks/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,13 @@ style: lint/format
- Opus: `claude-opus-5-5`
- Sonnet: `claude-sonnet-5-5`
- Fable: `claude-fable-5-1`
- Haiku: `claude-haiku-4-5`
- Haiku: `claude-haiku-5-5`
- **Never use dated model IDs** (e.g., `claude-sonnet-4-5-20250929`). Always use the non-dated alias.
- **Bedrock model IDs** follow a different format. Use the base Bedrock model ID from the docs:
- Opus 5.5: `anthropic.claude-opus-5-5`
- Sonnet 5.5: `anthropic.claude-sonnet-5-5`
- Fable 5.1: `anthropic.claude-fable-5-1`
- Haiku 4.5: `anthropic.claude-haiku-4-5`
- Haiku 5.5: `anthropic.claude-haiku-5-5`
- Prepend `global.` for global endpoints (recommended): `global.anthropic.claude-opus-5-5`
- Note: these are the IDs for Bedrock's Messages-API endpoint. Integrations that only go through InvokeModel (for example `boto3` `invoke_model`, or fine-tuning jobs) use the dated form instead, e.g. `anthropic.claude-haiku-4-5-20251001-v1:0`.

Expand Down
4 changes: 2 additions & 2 deletions content/github/claude-cookbooks/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ If a hook fails, fix the issues and try committing again.

2. **Use current Claude models**:
- Use model aliases for better maintainability when available
- Current models: `claude-opus-5-5`, `claude-sonnet-5-5`, `claude-fable-5-1`, `claude-haiku-4-5`
- Never use dated model IDs; `claude-haiku-4-5` is a good low-cost default for examples
- Current models: `claude-opus-5-5`, `claude-sonnet-5-5`, `claude-fable-5-1`, `claude-haiku-5-5`
- Never use dated model IDs; `claude-haiku-5-5` is a good low-cost default for examples
- Check current models at: https://platform.claude.com/docs/en/about-claude/models/overview
- Claude will automatically validate model usage in PR reviews

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ The evaluation is orchestrated by the `promptfooconfig.yaml` file. In this file
- The functions are identical to those used in `guide.ipynb` except that instead of calling the Claude API they just return the prompt. Promptfoo then handles the orchestration of calling the API and storing the results.
- You can read more about prompt functions [here](https://www.promptfoo.dev/docs/configuration/parameters#prompt-functions). Using python allows us to reuse the VectorDB class which is necessary for RAG, this is defined in `vectordb.py`.
- Providers
- With Promptfoo you can connect to many different LLMs from different platforms, see [here for more](https://www.promptfoo.dev/docs/providers). In `guide.ipynb` we used Haiku with default temperature 0.0. We will use Promptfoo to experiment with an array of different temperature settings to identify the optimal choice for our use case.
- With Promptfoo you can connect to many different LLMs from different platforms, see [here for more](https://www.promptfoo.dev/docs/providers). In `guide.ipynb` we used Claude Haiku with default sampling settings. The checked-in Promptfoo configuration is the recorded temperature sweep on `claude-haiku-4-5`; current models reject a non-default `temperature`, so to re-run it on Claude Haiku 5.5 drop the `temperature` lines and compare models instead.
- Tests
- We will use the same data that was used in `guide.ipynb` which can be found in [`dataset.csv`](./dataset.csv).
- Promptfoo has a wide array of built in tests which can be found [here](https://www.promptfoo.dev/docs/configuration/expected-outputs/deterministic).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"\n",
"import anthropic\n",
"\n",
"MODEL = \"claude-haiku-4-5\"\n",
"MODEL = \"claude-haiku-5-5\"\n",
"client = anthropic.Anthropic(\n",
" # This is the default and can be omitted\n",
" api_key=os.getenv(\"ANTHROPIC_API_KEY\"),\n",
Expand Down Expand Up @@ -483,9 +483,9 @@
"\n",
"1. **Structured prompt template**: We provide the category definitions and the support ticket in a clear XML format, making it easy for Claude to parse the information.\n",
"\n",
"2. **Controlled output with prefilling**: By starting the assistant's response with `<category>` and setting `stop_sequences=[\"</category>\"]`, we force Claude to output just the category label—no explanation or extra text. This makes response parsing reliable and deterministic.\n",
"2. **Controlled output with tags and a stop sequence**: The prompt asks for the label between `<category>` tags and we set `stop_sequences=[\"</category>\"]`, so Claude stops right after the label. We then take whatever follows `<category>` in the text blocks of the response, which keeps parsing reliable.\n",
"\n",
"3. **Deterministic classification**: Setting `temperature=0.0` ensures consistent predictions for the same input, which is critical for classification tasks.\n"
"3. **Default sampling**: current Claude models, including Claude Haiku 5.5, do not accept `temperature`, `top_p`, or `top_k`, so we leave sampling at its defaults. The constrained output format keeps predictions consistent.\n"
]
},
{
Expand Down Expand Up @@ -513,19 +513,16 @@
" .replace(\"{{ticket}}\", X)\n",
" )\n",
" response = client.messages.create(\n",
" messages=[\n",
" {\"role\": \"user\", \"content\": prompt},\n",
" {\"role\": \"assistant\", \"content\": \"<category>\"},\n",
" ],\n",
" messages=[{\"role\": \"user\", \"content\": prompt}],\n",
" stop_sequences=[\"</category>\"],\n",
" max_tokens=4096,\n",
" temperature=0.0,\n",
" model=MODEL,\n",
" )\n",
"\n",
" # Extract the result from the response\n",
" result = response.content[0].text # pyright: ignore[reportAttributeAccessIssue]\n",
" return result.strip()"
" # The reply is \"<category>Label\" (the stop sequence trims the closing tag) and may be\n",
" # preceded by a thinking block, so read only the text blocks and take what follows the tag.\n",
" text = \"\".join(b.text for b in response.content if b.type == \"text\")\n",
" return text.split(\"<category>\")[-1].strip()"
]
},
{
Expand Down Expand Up @@ -785,19 +782,14 @@
" .replace(\"{{examples}}\", rag_string)\n",
" )\n",
" response = client.messages.create(\n",
" messages=[\n",
" {\"role\": \"user\", \"content\": prompt},\n",
" {\"role\": \"assistant\", \"content\": \"<category>\"},\n",
" ],\n",
" messages=[{\"role\": \"user\", \"content\": prompt}],\n",
" stop_sequences=[\"</category>\"],\n",
" max_tokens=4096,\n",
" temperature=0.0,\n",
" model=\"claude-haiku-4-5\",\n",
" model=MODEL,\n",
" )\n",
"\n",
" # Extract the result from the response\n",
" result = response.content[0].text.strip()\n",
" return result"
" text = \"\".join(b.text for b in response.content if b.type == \"text\")\n",
" return text.split(\"<category>\")[-1].strip()"
]
},
{
Expand Down Expand Up @@ -920,19 +912,16 @@
" .replace(\"{{examples}}\", rag_string)\n",
" )\n",
" response = client.messages.create(\n",
" messages=[\n",
" {\"role\": \"user\", \"content\": prompt},\n",
" {\"role\": \"assistant\", \"content\": \"<response><scratchpad>\"},\n",
" ],\n",
" messages=[{\"role\": \"user\", \"content\": prompt}],\n",
" stop_sequences=[\"</category>\"],\n",
" max_tokens=4096,\n",
" temperature=0.0,\n",
" model=MODEL,\n",
" )\n",
"\n",
" # Extract the result from the response\n",
" result = response.content[0].text.split(\"<category>\")[1].strip()\n",
" return result"
" # The prompt asks for <response><scratchpad>...</scratchpad><category>Label</category>;\n",
" # take what follows <category> in the text blocks.\n",
" text = \"\".join(b.text for b in response.content if b.type == \"text\")\n",
" return text.split(\"<category>\")[-1].strip()"
]
},
{
Expand Down Expand Up @@ -1023,7 +1012,7 @@
"\n",
"## Running Promptfoo Evaluation\n",
"\n",
"Promptfoo is an open-source LLM evaluation toolkit that automates prompt testing across multiple configurations. For this guide, we've set up a Promptfoo evaluation that tests all three approaches (Simple, RAG, RAG w/ CoT) across different temperature settings.\n",
"Promptfoo is an open-source LLM evaluation toolkit that automates prompt testing across multiple configurations. For this guide, we've set up a Promptfoo evaluation that tests all three approaches (Simple, RAG, RAG w/ CoT). The checked-in configuration and `data/results.csv` were recorded with `claude-haiku-4-5` across five temperature settings; current models no longer accept `temperature`, so to re-run it on Claude Haiku 5.5 drop the `temperature` lines and compare models instead.\n",
"\n",
"**To run the evaluation:**\n",
"\n",
Expand Down Expand Up @@ -1105,7 +1094,7 @@
"### What We Tested\n",
"\n",
"Using Promptfoo, we evaluated all three prompt approaches (Simple, RAG, RAG w/ CoT) across:\n",
"- **Multiple temperature settings** (0.0, 0.2, 0.4, 0.6, 0.8): Testing whether deterministic classification (T=0.0) outperforms slightly randomized outputs\n",
"- **Multiple temperature settings** (0.0, 0.2, 0.4, 0.6, 0.8), recorded with `claude-haiku-4-5`: testing whether deterministic classification (T=0.0) outperforms slightly randomized outputs. Current models do not accept `temperature`, so this axis only applies to that recorded run.\n",
"- **The same test set** (68 examples): Ensuring fair comparison across all configurations\n",
"- **Automated pass/fail checking**: Each prediction is automatically compared against ground truth labels\n",
"\n",
Expand All @@ -1119,7 +1108,7 @@
"\n",
"3. **Simple prompts are temperature-agnostic**: The simple classifier hovers around 70% accuracy regardless of temperature, confirming that without RAG or CoT, the model relies primarily on category definitions\n",
"\n",
"4. **Production recommendation**: Use `temperature=0.0` with RAG w/ CoT for maximum consistency and accuracy (95.59%)\n",
"4. **Production recommendation**: Use RAG w/ CoT (95.59% in the recorded run) for the best accuracy; on current models leave sampling at its defaults\n",
"\n",
"To run these evaluations yourself, see `./evaluation/README.md` for setup instructions."
]
Expand Down
Loading
Loading