Semantic indexing, recorded

An indexed docset can be asked a question two ways, and the two ways fail in opposite directions. Ask for CLAUDE_CODE_SYNC_SKILLS and BM25 has the literal string while the embedding of a lone identifier is a weak vector. Ask “which hook events fire once per turn” and the embedding knows what you mean while BM25 matches on hook and events everywhere. Below, 11 questions — 5 exact-token probes and 6 paraphrases from the golden set — are run all three ways so the trade is visible rather than asserted.

This is a recording

Every hit and every timing on this page was recorded on 2026-08-31 and committed as src/data/demo.json. The page runs no query: there is no backend behind it, and there will not be one until the API lands. What you are reading is what codeclaudecom__codeclaudecom__facts answered that day — the facts layer, 5 hits per leg, embedded with mxbai-embed-large against http://localhost:11434 on one laptop. Timings are one run on one machine: treat the ratio between the legs as the finding and the absolute milliseconds as weather. The first question in the run also pays the one-off cost of opening the connection to the embedding host, which is why its vector leg is several times the rest; it is marked below. Bracketed [tokens] in a keyword snippet are FTS5 marking what it matched.

To run the same questions against your own docset, see the reference for the commands, and the essay for what the two legs are doing and why the fusion is the default.

The three legs

CLAUDE_CODE_SYNC_SKILLS exact-token

keyword0.589 ms · vector124.62 ms · hybrid125.227 ms — first query in the run: the vector leg carries the one-off connection cost, not retrieval

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/env-vars#variables 15.2433
    … Timeout in milliseconds for a mid-session skills resync when `[CLAUDE_CODE_SYNC_SKILLS]` is set (default: 30000). Bounds the download triggered when the …
  2. code.claude.com/docs/en/env-vars#variables 14.6435
    … Timeout in milliseconds for the first query to wait for the initial skill list when `[CLAUDE_CODE_SYNC_SKILLS]` is set (default: 5000). When …
  3. code.claude.com/docs/en/env-vars#variables 14.3358
    … Before it runs the first query, Claude Code waits up to `[CLAUDE_CODE_SYNC_SKILLS]_WAIT_TIMEOUT_MS` for the list of your skills …
  4. code.claude.com/docs/en/skills#where-synced-skills-load 13.9274
    Run Claude Code in non-interactive mode with syncing turned on [CLAUDE_CODE_SYNC_SKILLS]=1 claude -p "List the skills you have available"
  5. code.claude.com/docs/en/skills#where-synced-skills-load 13.2941
    Confirm the skills load in a local session — Start an interactive session, without `[CLAUDE_CODE_SYNC_SKILLS]` set, and run `/skills`. The menu lists …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/env-vars#variables 0.8613
    `CLAUDE_CODE_SYNC_SKILLS`: Set to `1` to download your enabled claude.ai skills into `~/.claude/skills/synced/` and resync every 10 minutes. Before it runs the first query, Claude Code waits up to `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` for the list of your skills. The downloads themselves finish
  2. code.claude.com/docs/en/skills#where-synced-skills-load 0.8287
    Run Claude Code in non-interactive mode with syncing turned on CLAUDE_CODE_SYNC_SKILLS=1 claude -p "List the skills you have available"
  3. code.claude.com/docs/en/changelog 0.8152
    2.0.20: * Added support for Claude Skills
  4. code.claude.com/docs/en/skills#using-skill-frontmatter-outside-claude-code 0.7987
    Claude Code skills at [any level](#where-skills-live), including [plugin](/docs/en/plugins) skills: Every field in the table above
  5. code.claude.com/docs/en/skills#where-synced-skills-load 0.7958
    Run Claude Code in non-interactive mode with syncing turned on — Claude Code downloads synced skills only when you run it in [non-interactive mode](/docs/en/headless) with the `-p` flag and set [`CLAUDE_CODE_SYNC_SKILLS`](/docs/en/env-vars#variables) to `1`. The prompt you pass doesn't affect the do

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/env-vars#variables 0.03226 · 2 legs
    `CLAUDE_CODE_SYNC_SKILLS`: Set to `1` to download your enabled claude.ai skills into `~/.claude/skills/synced/` and resync every 10 minutes. Before it runs the first query, Claude Code waits up to `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` for the list of your skills. The downloads themselves finish
  2. code.claude.com/docs/en/skills#where-synced-skills-load 0.03175 · 2 legs
    Run Claude Code in non-interactive mode with syncing turned on CLAUDE_CODE_SYNC_SKILLS=1 claude -p "List the skills you have available"
  3. code.claude.com/docs/en/env-vars#variables 0.01639 · 1 leg
    … Timeout in milliseconds for a mid-session skills resync when `[CLAUDE_CODE_SYNC_SKILLS]` is set (default: 30000). Bounds the download triggered when the …
  4. code.claude.com/docs/en/env-vars#variables 0.01613 · 1 leg
    … Timeout in milliseconds for the first query to wait for the initial skill list when `[CLAUDE_CODE_SYNC_SKILLS]` is set (default: 5000). When …
  5. code.claude.com/docs/en/changelog 0.01587 · 1 leg
    2.0.20: * Added support for Claude Skills

allowUnsandboxedCommands exact-token

keyword0.206 ms · vector18.372 ms · hybrid18.595 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/settings-reference#all-settings 15.0148
    [`sandbox.[allowUnsandboxedCommands]`](#sandbox-[allowunsandboxedcommands]): Description=Let Claude retry a blocked command outside the [sandbox](/docs/en/sandboxing#the-unsandboxed-retry-escape-hatch), or forbid …
  2. code.claude.com/docs/en/settings-reference#sandboxallowunsandboxedcommands 14.2481
    managed-settings.json { "sandbox": { "enabled": true, "[allowUnsandboxedCommands]": false } }
  3. code.claude.com/docs/en/sandboxing#enforce-sandboxing-with-managed-settings 13.8258
    Enforce sandboxing with managed settings { "sandbox": { "enabled": true, "failIfUnavailable": true, "[allowUnsandboxedCommands]": false } }
  4. code.claude.com/docs/en/settings-reference#sandboxallowunsandboxedcommands 13.144
    `sandbox.[allowUnsandboxedCommands]` — Let Claude retry a command outside the sandbox with the `dangerouslyDisableSandbox` parameter after the sandbox blocks it.
  5. code.claude.com/docs/en/agent-sdk/python#sandboxsettings 12.9614
    `SandboxSettings` class SandboxSettings(TypedDict, total=False): enabled: bool autoAllowBashIfSandboxed: bool excludedCommands: list[str] [allowUnsandboxedCommands]: bool network: SandboxNetworkConfig ignoreViolations: SandboxIgnoreViolations enableWeakerNestedSandbox: bo

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/agent-sdk/python#permissions-fallback-for-unsandboxed-commands 0.8232
    Permissions Fallback for Unsandboxed Commands — When `allowUnsandboxedCommands` is enabled, the model can request to run commands outside the sandbox by setting `dangerouslyDisableSandbox: True` in the tool input.
  2. code.claude.com/docs/en/agent-sdk/typescript#permissions-fallback-for-unsandboxed-commands 0.8232
    Permissions Fallback for Unsandboxed Commands — When `allowUnsandboxedCommands` is enabled, the model can request to run commands outside the sandbox by setting `dangerouslyDisableSandbox: true` in the tool input.
  3. code.claude.com/docs/en/settings-reference#sandboxallowunsandboxedcommands 0.8184
    `sandbox.allowUnsandboxedCommands` — Let Claude retry a command outside the sandbox with the `dangerouslyDisableSandbox` parameter after the sandbox blocks it.
  4. code.claude.com/docs/en/agent-sdk/python#sandboxsettings 0.8143
    `allowUnsandboxedCommands`: Type=`bool`; Default=`True`; Description=Allow the model to request running commands outside the sandbox. When `True`, the model can set `dangerouslyDisableSandbox` in tool input, which falls back to the [permissions system](#permissions-fallback-for-unsandboxed-commands)
  5. code.claude.com/docs/en/agent-sdk/typescript#sandboxsettings 0.8103
    `allowUnsandboxedCommands`: Type=`boolean`; Default=`true`; Description=Allow the model to request running commands outside the sandbox. When `true`, the model can set `dangerouslyDisableSandbox` in tool input, which falls back to the [permissions system](#permissions-fallback-for-unsandboxed-comman

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/settings-reference#sandboxallowunsandboxedcommands 0.03149 · 2 legs
    `sandbox.allowUnsandboxedCommands` — Let Claude retry a command outside the sandbox with the `dangerouslyDisableSandbox` parameter after the sandbox blocks it.
  2. code.claude.com/docs/en/agent-sdk/python#permissions-fallback-for-unsandboxed-commands 0.01639 · 1 leg
    Permissions Fallback for Unsandboxed Commands — When `allowUnsandboxedCommands` is enabled, the model can request to run commands outside the sandbox by setting `dangerouslyDisableSandbox: True` in the tool input.
  3. code.claude.com/docs/en/settings-reference#all-settings 0.01639 · 1 leg
    [`sandbox.[allowUnsandboxedCommands]`](#sandbox-[allowunsandboxedcommands]): Description=Let Claude retry a blocked command outside the [sandbox](/docs/en/sandboxing#the-unsandboxed-retry-escape-hatch), or forbid …
  4. code.claude.com/docs/en/agent-sdk/typescript#permissions-fallback-for-unsandboxed-commands 0.01613 · 1 leg
    Permissions Fallback for Unsandboxed Commands — When `allowUnsandboxedCommands` is enabled, the model can request to run commands outside the sandbox by setting `dangerouslyDisableSandbox: true` in the tool input.
  5. code.claude.com/docs/en/settings-reference#sandboxallowunsandboxedcommands 0.01613 · 1 leg
    managed-settings.json { "sandbox": { "enabled": true, "[allowUnsandboxedCommands]": false } }

--append-system-prompt exact-token

keyword0.431 ms · vector15.217 ms · hybrid15.663 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/headless#start-faster-with-bare-mode 17.113
    System prompt additions: `--[append-system-prompt]`, `--[append-system-prompt]-file`
  2. code.claude.com/docs/en/cli-reference#system-prompt-flags 16.6022
    `--[append-system-prompt]`: Behavior=Appends to the default prompt; Example=`claude --[append-system-prompt] "Always use TypeScript"`
  3. code.claude.com/docs/en/cli-reference#system-prompt-flags 16.3238
    `--[append-system-prompt]-file`: Behavior=Appends file contents to the default prompt; Example=`claude --[append-system-prompt]-file ./style-rules.txt`
  4. code.claude.com/docs/en/cli-reference#cli-flags 16.1881
    `--[append-system-prompt]`: Description=Append custom text to the end of the default system prompt; Example=`claude --[append-system-prompt] "Always use TypeScript"`
  5. code.claude.com/docs/en/cli-reference#cli-flags 15.8584
    … Description=Load additional system prompt text from a file and append to the default prompt; Example=`claude --[append-system-prompt]-file ./extra-rules.txt`

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/headless#start-faster-with-bare-mode 0.9222
    System prompt additions: `--append-system-prompt`, `--append-system-prompt-file`
  2. code.claude.com/docs/en/output-styles#comparisons-to-related-features 0.8855
    `--append-system-prompt`: How it works=Appends to the system prompt without removing anything; Use it when=You want a one-off addition for a single invocation
  3. code.claude.com/docs/en/agent-sdk/python#systempromptpreset 0.8723
    `append`: Required=No; Description=Additional instructions to append to the preset system prompt
  4. code.claude.com/docs/en/cli-reference#system-prompt-flags 0.8342
    `--append-system-prompt-file`: Behavior=Appends file contents to the default prompt; Example=`claude --append-system-prompt-file ./style-rules.txt`
  5. code.claude.com/docs/en/cli-reference#cli-flags 0.8265
    `--append-system-prompt-file`: Description=Load additional system prompt text from a file and append to the default prompt; Example=`claude --append-system-prompt-file ./extra-rules.txt`

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/headless#start-faster-with-bare-mode 0.03278 · 2 legs
    System prompt additions: `--append-system-prompt`, `--append-system-prompt-file`
  2. code.claude.com/docs/en/cli-reference#system-prompt-flags 0.03149 · 2 legs
    `--append-system-prompt-file`: Behavior=Appends file contents to the default prompt; Example=`claude --append-system-prompt-file ./style-rules.txt`
  3. code.claude.com/docs/en/cli-reference#cli-flags 0.03076 · 2 legs
    `--append-system-prompt-file`: Description=Load additional system prompt text from a file and append to the default prompt; Example=`claude --append-system-prompt-file ./extra-rules.txt`
  4. code.claude.com/docs/en/output-styles#comparisons-to-related-features 0.01613 · 1 leg
    `--append-system-prompt`: How it works=Appends to the system prompt without removing anything; Use it when=You want a one-off addition for a single invocation
  5. code.claude.com/docs/en/cli-reference#system-prompt-flags 0.01613 · 1 leg
    `--[append-system-prompt]`: Behavior=Appends to the default prompt; Example=`claude --[append-system-prompt] "Always use TypeScript"`

extraKnownMarketplaces exact-token

keyword0.22 ms · vector14.932 ms · hybrid15.167 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/settings-reference#all-settings 14.4607
    [`[extraKnownMarketplaces]`](#[extraknownmarketplaces]): Description=Register [marketplaces](/docs/en/plugin-marketplaces) for a repository or an organization; Topic=Plugins and skills; Scope=Any file
  2. code.claude.com/docs/en/permissions#additional-directories-grant-file-access-not-configuration 14.4006
    [Settings](/docs/en/settings) in `.claude/settings.json` and `.claude/settings.local.json`: `enabledPlugins` and [`[extraKnownMarketplaces]`](/docs/en/settings-reference#[extraknownmarketplaces]) keys only
  3. code.claude.com/docs/en/settings-reference#combine-with-extraknownmarketplaces 13.2253
    Purpose: `strictKnownMarketplaces`=Organizational policy enforcement; `[extraKnownMarketplaces]`=Team convenience
  4. code.claude.com/docs/en/github-enterprise-server#pre-register-ghes-marketplaces-with-managed-settings 13.1938
    Pre-register GHES marketplaces with managed settings — The `[extraKnownMarketplaces]` setting pre-registers a marketplace so developers get it without manual setup. It works from …
  5. code.claude.com/docs/en/settings-reference#combine-with-extraknownmarketplaces 13.0264
    Settings file: `strictKnownMarketplaces`=Managed settings only; `[extraKnownMarketplaces]`=Any settings file

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/discover-plugins#configure-team-marketplaces 0.7284
    Add `extraKnownMarketplaces` to your project's `.claude/settings.json` to configure marketplaces.
  2. code.claude.com/docs/en/settings-reference#combine-with-extraknownmarketplaces 0.7272
    Purpose: `strictKnownMarketplaces`=Organizational policy enforcement; `extraKnownMarketplaces`=Team convenience
  3. code.claude.com/docs/en/plugin-marketplaces#common-configurations 0.7182
    Common configurations { "strictKnownMarketplaces": [] }
  4. code.claude.com/docs/en/settings-reference#extraknownmarketplaces 0.7123
    `extraKnownMarketplaces` — Register additional plugin marketplaces by name, so that people who open the repository, or everyone your managed settings reach, get the marketplace without adding it themselves. Claude Code registers each marketplace it doesn't already know.
  5. code.claude.com/docs/en/settings-reference#combine-with-extraknownmarketplaces 0.7112
    Can be overridden: `strictKnownMarketplaces`=No, highest precedence; `extraKnownMarketplaces`=Yes, by higher-precedence settings

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/settings-reference#combine-with-extraknownmarketplaces 0.032 · 2 legs
    Purpose: `strictKnownMarketplaces`=Organizational policy enforcement; `extraKnownMarketplaces`=Team convenience
  2. code.claude.com/docs/en/discover-plugins#configure-team-marketplaces 0.01639 · 1 leg
    Add `extraKnownMarketplaces` to your project's `.claude/settings.json` to configure marketplaces.
  3. code.claude.com/docs/en/settings-reference#all-settings 0.01639 · 1 leg
    [`[extraKnownMarketplaces]`](#[extraknownmarketplaces]): Description=Register [marketplaces](/docs/en/plugin-marketplaces) for a repository or an organization; Topic=Plugins and skills; Scope=Any file
  4. code.claude.com/docs/en/permissions#additional-directories-grant-file-access-not-configuration 0.01613 · 1 leg
    [Settings](/docs/en/settings) in `.claude/settings.json` and `.claude/settings.local.json`: `enabledPlugins` and [`[extraKnownMarketplaces]`](/docs/en/settings-reference#[extraknownmarketplaces]) keys only
  5. code.claude.com/docs/en/plugin-marketplaces#common-configurations 0.01587 · 1 leg
    Common configurations { "strictKnownMarketplaces": [] }

--output-format stream-json exact-token

keyword1.05 ms · vector15.618 ms · hybrid16.683 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/cli-reference#cli-flags 26.2341
    … Requires `--input-format [stream-json]` and `--[output-format] [stream-json]`; Example=`claude -p --input-format [stream-json] --[output-format] [stream-json] --verbose --replay-user …
  2. code.claude.com/docs/en/cli-reference#cli-flags 25.271
    … Requires `--print` and `--[output-format] [stream-json]`; Example=`claude -p --[output-format] [stream-json] --verbose --include-partial-messages "query"`
  3. code.claude.com/docs/en/cli-reference#cli-flags 24.5159
    `--[output-format]`: Description=Specify [output format] for print mode (options: `text`, `json`, `[stream-json]`); Example=`claude -p "query" --[output-format] json`
  4. code.claude.com/docs/en/cli-reference#cli-flags 23.8573
    `--input-format`: Description=Specify input format for print mode (options: `text`, `[stream-json]`); Example=`claude -p --[output-format] json --input-format [stream-json]`
  5. code.claude.com/docs/en/cli-reference#cli-flags 23.1145
    … Requires `--print`, `--[output-format] [stream-json]`, and `--verbose`. See [Prompt suggestions](/docs/en/interactive-mode#prompt-suggestions); Example=`claude -p --prompt-suggestions --[output-format] …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/plugin-marketplaces#plugin-marketplace-list 0.8144
    `--json`: Output as JSON
  2. code.claude.com/docs/en/best-practices#automate-and-scale 0.797
    The `stream-json` format prints one JSON object per line, starting with an init event.
  3. code.claude.com/docs/en/best-practices#automate-and-scale 0.7917
    Use `claude -p "prompt" --output-format stream-json --verbose` to get streaming JSON output in scripts.
  4. code.claude.com/docs/en/headless#stream-responses 0.7826
    Stream responses — Use `--output-format stream-json` with `--verbose` and `--include-partial-messages` to receive tokens as they're generated. Each line is a JSON object representing an event:
  5. code.claude.com/docs/en/plugins-reference#plugin-list 0.7794
    `--json`: Description=Output as JSON

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/plugin-marketplaces#plugin-marketplace-list 0.01639 · 1 leg
    `--json`: Output as JSON
  2. code.claude.com/docs/en/cli-reference#cli-flags 0.01639 · 1 leg
    … Requires `--input-format [stream-json]` and `--[output-format] [stream-json]`; Example=`claude -p --input-format [stream-json] --[output-format] [stream-json] --verbose --replay-user …
  3. code.claude.com/docs/en/best-practices#automate-and-scale 0.01613 · 1 leg
    The `stream-json` format prints one JSON object per line, starting with an init event.
  4. code.claude.com/docs/en/cli-reference#cli-flags 0.01613 · 1 leg
    … Requires `--print` and `--[output-format] [stream-json]`; Example=`claude -p --[output-format] [stream-json] --verbose --include-partial-messages "query"`
  5. code.claude.com/docs/en/best-practices#automate-and-scale 0.01587 · 1 leg
    Use `claude -p "prompt" --output-format stream-json --verbose` to get streaming JSON output in scripts.

Install Claude Code on Windows with PowerShell paraphrase

keyword30.13 ms · vector14.399 ms · hybrid44.544 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/troubleshoot-install#find-your-error 36.8708
    `[Claude] [Code] [on] [Windows] requires either Git for [Windows] (for bash) or [PowerShell]`: [[Install] a shell](#[claude]-[code]-[on]-[windows]-requires-either-git-for …
  2. code.claude.com/docs/en/hooks#windows-powershell-tool 30.4832
    [Windows] [PowerShell] tool — [On] [Windows], you can run individual hooks in [PowerShell] by setting `"shell": "[powershell]"` [on] a command hook. [Claude] [Code] auto-detects …
  3. code.claude.com/docs/en/troubleshoot-install#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell 30.2661
    [Claude] [Code] [on] [Windows] requires either Git for [Windows] (for bash) or [PowerShell] — Git for [Windows] is optional. [Claude] [Code] uses the [[PowerShell] tool …
  4. code.claude.com/docs/en/troubleshoot-install#claude-code-does-not-support-32-bit-windows 29.125
    [Claude] [Code] does not support 32-bit [Windows] — [Windows] includes two [PowerShell] entries in the Start menu: `[Windows] [PowerShell]` and `[Windows] [PowerShell] (x86)`. The …
  5. code.claude.com/docs/en/hooks#command-hook-fields 28.6428
    … Setting `"[powershell]"` runs the command via [PowerShell] [on] [Windows]. Does not require `[CLAUDE]_[CODE]_USE_[POWERSHELL]_TOOL` since hooks spawn [PowerShell] directly. Ignored when …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/setup#install-claude-code 0.8539
    Install Claude Code claude
  2. code.claude.com/docs/en/troubleshoot-install#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell 0.8342
    Claude Code on Windows requires either Git for Windows (for bash) or PowerShell { "env": { "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe" } }
  3. code.claude.com/docs/en/troubleshoot-install#find-your-error 0.8327
    `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell`: [Install a shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell)
  4. code.claude.com/docs/en/troubleshoot-install#find-your-error 0.8291
    `Claude Code does not support 32-bit Windows`: [Open Windows PowerShell, not the x86 entry](#claude-code-does-not-support-32-bit-windows)
  5. code.claude.com/docs/en/tools-reference#enable-the-powershell-tool 0.8246
    Enable the PowerShell tool — Set `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` in your environment or in `settings.json`:

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/troubleshoot-install#find-your-error 0.03226 · 2 legs
    `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell`: [Install a shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell)
  2. code.claude.com/docs/en/setup#install-claude-code 0.01639 · 1 leg
    Install Claude Code claude
  3. code.claude.com/docs/en/troubleshoot-install#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell 0.01613 · 1 leg
    Claude Code on Windows requires either Git for Windows (for bash) or PowerShell { "env": { "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe" } }
  4. code.claude.com/docs/en/hooks#windows-powershell-tool 0.01613 · 1 leg
    [Windows] [PowerShell] tool — [On] [Windows], you can run individual hooks in [PowerShell] by setting `"shell": "[powershell]"` [on] a command hook. [Claude] [Code] auto-detects …
  5. code.claude.com/docs/en/troubleshoot-install#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell 0.01587 · 1 leg
    [Claude] [Code] [on] [Windows] requires either Git for [Windows] (for bash) or [PowerShell] — Git for [Windows] is optional. [Claude] [Code] uses the [[PowerShell] tool …

PreToolUse hook exit codes and meanings paraphrase

keyword28.329 ms · vector16.178 ms · hybrid44.522 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/hooks#debug-hooks 25.9754
    Debug hooks — [Hook] execution details, including which hooks matched, their [exit] [codes], [and] full stdout [and] stderr, are written to the debug log file.
  2. code.claude.com/docs/en/hooks#http-response-handling 25.9542
    HTTP response handling — HTTP hooks use HTTP status [codes] [and] response bodies instead of [exit] [codes] [and] stdout. The outcomes below apply to most …
  3. code.claude.com/docs/en/hooks#hooks-reference 25.5186
    Hooks reference — Reference for Claude Code [hook] events, configuration schema, JSON input/output formats, [exit] [codes], async hooks, HTTP hooks, prompt hooks, [and] MCP …
  4. code.claude.com/docs/en/hooks#how-a-hook-resolves 23.8374
    … rf'; then jq -n '{ hookSpecificOutput: { hookEventName: "[PreToolUse]", permissionDecision: "deny", permissionDecisionReason: "Destructive command blocked by [hook]" } }' else [exit] 0 # no decision; normal permission flow applies …
  5. code.claude.com/docs/en/hooks#hook-input-and-output 23.678
    [Hook] input [and] output — Command hooks receive JSON data via stdin [and] communicate results through [exit] [codes], stdout, [and] stderr. HTTP hooks receive the …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/hooks#exit-code-2-behavior-per-event 0.7839
    `PreToolUse`: Can block?=Yes; What happens on exit 2=Blocks the tool call
  2. code.claude.com/docs/en/hooks-guide#hook-error-in-output 0.7689
    Hook error in output — You see a message like "PreToolUse hook error: ..." in the transcript.
  3. code.claude.com/docs/en/hooks#pretooluse-decision-control 0.7576
    PreToolUse decision control { "hookSpecificOutput": { "hookEventName": "PreToolUse", "permissionDecision": "allow", "permissionDecisionReason": "My reason here", "updatedInput": { "field_to_modify": "new value" }, "additionalContext": "Current environment: production.
  4. code.claude.com/docs/en/hooks-guide#hook-error-in-output 0.757
    Hook error in output echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh echo $? # Check the exit code
  5. code.claude.com/docs/en/agent-sdk/typescript#pretoolusehookinput 0.7509
    `PreToolUseHookInput` type PreToolUseHookInput = BaseHookInput & { hook_event_name: "PreToolUse"; tool_name: string; tool_input: unknown; tool_use_id: string; };

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/hooks#exit-code-2-behavior-per-event 0.01639 · 1 leg
    `PreToolUse`: Can block?=Yes; What happens on exit 2=Blocks the tool call
  2. code.claude.com/docs/en/hooks#debug-hooks 0.01639 · 1 leg
    Debug hooks — [Hook] execution details, including which hooks matched, their [exit] [codes], [and] full stdout [and] stderr, are written to the debug log file.
  3. code.claude.com/docs/en/hooks-guide#hook-error-in-output 0.01613 · 1 leg
    Hook error in output — You see a message like "PreToolUse hook error: ..." in the transcript.
  4. code.claude.com/docs/en/hooks#http-response-handling 0.01613 · 1 leg
    HTTP response handling — HTTP hooks use HTTP status [codes] [and] response bodies instead of [exit] [codes] [and] stdout. The outcomes below apply to most …
  5. code.claude.com/docs/en/hooks#pretooluse-decision-control 0.01587 · 1 leg
    PreToolUse decision control { "hookSpecificOutput": { "hookEventName": "PreToolUse", "permissionDecision": "allow", "permissionDecisionReason": "My reason here", "updatedInput": { "field_to_modify": "new value" }, "additionalContext": "Current environment: production.

Which hook events fire once per turn paraphrase

keyword15.045 ms · vector14.718 ms · hybrid29.777 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/agent-sdk/claude-code-features#when-to-use-which-hook-type 21.0056
    … These also [fire] inside subagents. The [hook] input, the callback's first argument, carries `agent_id` and `agent_type` fields that identify [which] agent …
  2. code.claude.com/docs/en/self-hosted-environments-configuration#the-spawn-runner-hook 20.2445
    The spawn-runner [hook] — The orchestrator runs `${hooks-dir}/spawn-runner` [once] [per] spawn request. The [hook] must submit work asynchronously, without waiting for …
  3. code.claude.com/docs/en/self-hosted-environments-configuration#checkout 18.6149
    checkout — Runs [once] [per] repository, in place of the runner's built-in clone and fetch. Use the [hook] to clone from a read …
  4. code.claude.com/docs/en/agent-sdk/hooks#matchers 18.4834
    Matchers — Use matchers to filter when your callbacks [fire]. The `matcher` field matches against a different value depending on the [hook] event type.
  5. code.claude.com/docs/en/self-hosted-environments-reference#session-lifecycle-counter-semantics 17.9307
    … long-lived orchestrator that increments [once] [per] successful `spawn-runner` [hook] and stays meaningful under `rate()`. It counts [hook] invocations rather than sessions, so …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/goal#compare-ways-to-keep-a-session-running 0.7912
    [Stop hook](/docs/en/hooks-guide#prompt-based-hooks): Next turn starts when=The previous turn finishes; Stops when=Your own script or prompt decides
  2. code.claude.com/docs/en/features-overview#context-cost-by-feature 0.7398
    **Hooks**: When it loads=On trigger; What loads=Nothing (runs externally); Context cost=Zero, unless hook returns additional context
  3. code.claude.com/docs/en/features-overview#build-your-setup-over-time 0.728
    You want something to happen every time without asking: Write a [hook](/docs/en/hooks-guide)
  4. code.claude.com/docs/en/env-vars#variables 0.7273
    `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`: Maximum number of consecutive times a [Stop](/docs/en/hooks#stop) or [SubagentStop](/docs/en/hooks#subagentstop) hook may block the turn from ending before Claude Code overrides it and ends the turn anyway (default: 8). Set to `0` to disable the cap. Raise this if
  5. code.claude.com/docs/en/hooks-guide#how-hooks-work 0.7235
    How hooks work — Claude Code fires hook events at specific points in its lifecycle. When an event fires, Claude Code runs all matching hooks in parallel; see [Hook handler fields](/docs/en/hooks#hook-handler-fields) for how duplicate handlers are treated.

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/goal#compare-ways-to-keep-a-session-running 0.01639 · 1 leg
    [Stop hook](/docs/en/hooks-guide#prompt-based-hooks): Next turn starts when=The previous turn finishes; Stops when=Your own script or prompt decides
  2. code.claude.com/docs/en/agent-sdk/claude-code-features#when-to-use-which-hook-type 0.01639 · 1 leg
    … These also [fire] inside subagents. The [hook] input, the callback's first argument, carries `agent_id` and `agent_type` fields that identify [which] agent …
  3. code.claude.com/docs/en/features-overview#context-cost-by-feature 0.01613 · 1 leg
    **Hooks**: When it loads=On trigger; What loads=Nothing (runs externally); Context cost=Zero, unless hook returns additional context
  4. code.claude.com/docs/en/self-hosted-environments-configuration#the-spawn-runner-hook 0.01613 · 1 leg
    The spawn-runner [hook] — The orchestrator runs `${hooks-dir}/spawn-runner` [once] [per] spawn request. The [hook] must submit work asynchronously, without waiting for …
  5. code.claude.com/docs/en/features-overview#build-your-setup-over-time 0.01587 · 1 leg
    You want something to happen every time without asking: Write a [hook](/docs/en/hooks-guide)

Run headless in CI and get JSON output paraphrase

keyword40.475 ms · vector20.615 ms · hybrid61.102 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/best-practices#run-non-interactive-mode 22.8258
    [Run] non-interactive mode — Use `claude -p "prompt"` [in] [CI], pre-commit hooks, or scripts. Add `--[output]-format stream-[json] --verbose` for streaming [JSON] …
  2. code.claude.com/docs/en/errors#the-json-schema-value-is-not-a-valid-json-schema 21.6752
    … passed to [`--[json]-schema`](/docs/en/cli-reference#cli-flags) [in] [non-interactive mode](/docs/en/[headless]#[get]-structured-[output]) failed [JSON] Schema compilation …
  3. code.claude.com/docs/en/hooks#json-output 19.1133
    … [In] [Agent SDK](/docs/en/agent-sdk/overview) [and] [`--[output]-format stream-[json]`](/docs/en/[headless]) [output], it can arrive as an [`SDKInformationalMessage`](/docs …
  4. code.claude.com/docs/en/errors#server-errors 17.1393
    [In] a non-interactive `-p` [run] without `--input-format stream-[json]`, a safety block sent to a background subagent returns an error result containing …
  5. code.claude.com/docs/en/code-review#check-run-output 16.8109
    Check [run] [output] — Beyond the inline review comments, each review populates the **Claude Code Review** check [run] that appears alongside your [CI] checks. Expand …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/best-practices#run-non-interactive-mode 0.7222
    Run non-interactive mode — Use `claude -p "prompt"` in CI, pre-commit hooks, or scripts. Add `--output-format stream-json --verbose` for streaming JSON output.
  2. code.claude.com/docs/en/headless#get-structured-output 0.6815
    Get structured output claude -p "Summarize this project" --output-format json
  3. code.claude.com/docs/en/plugin-marketplaces#plugin-marketplace-list 0.6757
    `--json`: Output as JSON
  4. code.claude.com/docs/en/hooks#json-output 0.6752
    JSON output { "continue": false, "stopReason": "Build failed, fix errors before continuing" }
  5. code.claude.com/docs/en/hooks-guide#structured-json-output 0.6703
    Structured JSON output { "hookSpecificOutput": { "hookEventName": "UserPromptSubmit", "additionalContext": "Current branch: release-42. Deploy freeze until Friday." } }

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/best-practices#run-non-interactive-mode 0.03278 · 2 legs
    Run non-interactive mode — Use `claude -p "prompt"` in CI, pre-commit hooks, or scripts. Add `--output-format stream-json --verbose` for streaming JSON output.
  2. code.claude.com/docs/en/headless#get-structured-output 0.01613 · 1 leg
    Get structured output claude -p "Summarize this project" --output-format json
  3. code.claude.com/docs/en/errors#the-json-schema-value-is-not-a-valid-json-schema 0.01613 · 1 leg
    … passed to [`--[json]-schema`](/docs/en/cli-reference#cli-flags) [in] [non-interactive mode](/docs/en/[headless]#[get]-structured-[output]) failed [JSON] Schema compilation …
  4. code.claude.com/docs/en/plugin-marketplaces#plugin-marketplace-list 0.01587 · 1 leg
    `--json`: Output as JSON
  5. code.claude.com/docs/en/hooks#json-output 0.01587 · 1 leg
    … [In] [Agent SDK](/docs/en/agent-sdk/overview) [and] [`--[output]-format stream-[json]`](/docs/en/[headless]) [output], it can arrive as an [`SDKInformationalMessage`](/docs …

SessionStart versus UserPromptSubmit paraphrase

keyword0.492 ms · vector17.233 ms · hybrid17.737 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/agent-sdk/typescript#hookevent 20.7941
    `HookEvent` type HookEvent = | "PreToolUse" | "PostToolUse" | "PostToolUseFailure" | "PostToolBatch" | "Notification" | "[UserPromptSubmit]" | "UserPromptExpansion" | "[SessionStart]" | "SessionEnd" | "Stop" | "StopFailure" | "SubagentStart" | "SubagentStop" | "PreCompact
  2. code.claude.com/docs/en/hooks#userpromptsubmit-decision-control 14.1982
    [UserPromptSubmit] decision control { "decision": "block", "reason": "Explanation for decision", "hookSpecificOutput": { "hookEventName": "[UserPromptSubmit]", "additionalContext": "My additional context here", "sessionTitle": "My session title" } }
  3. code.claude.com/docs/en/hooks#decision-control 14.0938
    … [SessionStart] also accepts [`initialUserMessage`, `watchPaths`, `sessionTitle`, and `reloadSkills`](#[sessionstart]-decision-control). No blocking or decision control
  4. code.claude.com/docs/en/cloud-environments#setup-scripts-vs-sessionstart-hooks 13.5035
    … Use a [[SessionStart] hook](/docs/en/hooks#[sessionstart]) for project setup that should run everywhere, cloud and local, like `npm install`.
  5. code.claude.com/docs/en/cloud-environments#install-dependencies-with-a-sessionstart-hook 13.4029
    Install dependencies with a [SessionStart] hook { "hooks": { "[SessionStart]": [ { "matcher": "startup|resume", "hooks": [ { "type": "command", "command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh" } ]

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/agent-sdk/agent-loop#hooks 0.7894
    `UserPromptSubmit`: When it fires=When a prompt is sent; Common uses=Inject additional context into prompts
  2. code.claude.com/docs/en/hooks-guide#how-hooks-work 0.7621
    `UserPromptSubmit`: When you submit a prompt, before Claude processes it
  3. code.claude.com/docs/en/hooks#hook-lifecycle 0.7621
    `UserPromptSubmit`: When you submit a prompt, before Claude processes it
  4. code.claude.com/docs/en/plugins-reference#hooks 0.7621
    `UserPromptSubmit`: When you submit a prompt, before Claude processes it
  5. code.claude.com/docs/en/hooks-guide#how-hooks-work 0.7608
    `SessionStart`: When a session begins or resumes

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/agent-sdk/agent-loop#hooks 0.01639 · 1 leg
    `UserPromptSubmit`: When it fires=When a prompt is sent; Common uses=Inject additional context into prompts
  2. code.claude.com/docs/en/agent-sdk/typescript#hookevent 0.01639 · 1 leg
    `HookEvent` type HookEvent = | "PreToolUse" | "PostToolUse" | "PostToolUseFailure" | "PostToolBatch" | "Notification" | "[UserPromptSubmit]" | "UserPromptExpansion" | "[SessionStart]" | "SessionEnd" | "Stop" | "StopFailure" | "SubagentStart" | "SubagentStop" | "PreCompact
  3. code.claude.com/docs/en/hooks-guide#how-hooks-work 0.01613 · 1 leg
    `UserPromptSubmit`: When you submit a prompt, before Claude processes it
  4. code.claude.com/docs/en/hooks#userpromptsubmit-decision-control 0.01613 · 1 leg
    [UserPromptSubmit] decision control { "decision": "block", "reason": "Explanation for decision", "hookSpecificOutput": { "hookEventName": "[UserPromptSubmit]", "additionalContext": "My additional context here", "sessionTitle": "My session title" } }
  5. code.claude.com/docs/en/hooks#hook-lifecycle 0.01587 · 1 leg
    `UserPromptSubmit`: When you submit a prompt, before Claude processes it

Check the installed version and update paraphrase

keyword44.91 ms · vector14.587 ms · hybrid59.509 ms

Keyword (BM25)

FTS5 over the same units. No model call.

  1. code.claude.com/docs/en/troubleshoot-install#check-for-conflicting-installations 18.7253
    [Check] for conflicting installations — Multiple Claude Code installations can cause [version] mismatches or unexpected behavior. [Check] what's [installed]:
  2. code.claude.com/docs/en/plugins-reference#version-management 17.5075
    … run `/plugin [update]` or auto-[update] fires, Claude Code computes [the] current [version] [and] skips [the] [update] if it matches what's already [installed].
  3. code.claude.com/docs/en/agent-view#how-background-sessions-are-hosted 16.6084
    [The] supervisor watches [the] [installed] Claude Code binary on disk [and] restarts into [the] new [version] after an auto-[update] replaces it.
  4. code.claude.com/docs/en/self-hosted-environments-deploy#pin-the-version 15.5272
    … binary, [and] [the] runner turns off auto-[update] inside [the] sessions it spawns, so every session runs [the] [version] you [installed] on [the] host …
  5. code.claude.com/docs/en/discover-plugins#configure-auto-updates 14.3137
    Configure auto-updates — Claude Code can automatically [update] marketplaces [and] their [installed] plugins in [the] background after startup. When auto-[update] is enabled for …

Vector

The question embedded, cosine against every unit.

  1. code.claude.com/docs/en/costs#understanding-changes-in-claude-code-behavior 0.7641
    Run `claude --version` to check your current version.
  2. code.claude.com/docs/en/setup#verify-the-manifest-signature 0.7438
    Download the manifest and signature — Set `VERSION` to the release you want to verify.
  3. code.claude.com/docs/en/desktop#check-your-version 0.7361
    Check your version — To see which version of the desktop app you're running:
  4. code.claude.com/docs/en/setup#verify-your-installation 0.7254
    Verify your installation claude --version
  5. code.claude.com/docs/en/troubleshoot-install#find-your-error 0.7198
    `Failed to fetch version` or can't reach download server: [Check network and proxy settings](#check-network-connectivity)

Hybrid (RRF)

Both legs fused, k=60, keyed by (url, seq).

  1. code.claude.com/docs/en/costs#understanding-changes-in-claude-code-behavior 0.01639 · 1 leg
    Run `claude --version` to check your current version.
  2. code.claude.com/docs/en/troubleshoot-install#check-for-conflicting-installations 0.01639 · 1 leg
    [Check] for conflicting installations — Multiple Claude Code installations can cause [version] mismatches or unexpected behavior. [Check] what's [installed]:
  3. code.claude.com/docs/en/setup#verify-the-manifest-signature 0.01613 · 1 leg
    Download the manifest and signature — Set `VERSION` to the release you want to verify.
  4. code.claude.com/docs/en/plugins-reference#version-management 0.01613 · 1 leg
    … run `/plugin [update]` or auto-[update] fires, Claude Code computes [the] current [version] [and] skips [the] [update] if it matches what's already [installed].
  5. code.claude.com/docs/en/desktop#check-your-version 0.01587 · 1 leg
    Check your version — To see which version of the desktop app you're running: