---
title: "Doctor: Version Compatibility: Prompt Caching Recommendation"
description: "For API-key, Bedrock, Vertex, or Foundry users running long OrchestKit sessions (brainstorm, implement, cover chains), enable 1-hour prompt caching"
canonical: "https://orchestkit.yonyon.ai/docs/reference/skills/doctor/references/version-compatibility/03-prompt-caching-recommendation"
---

# Doctor: Version Compatibility: Prompt Caching Recommendation

For API-key, Bedrock, Vertex, or Foundry users running long OrchestKit sessions (brainstorm, implement, cover chains), enable 1-hour prompt caching

> Part of the [Doctor](/docs/reference/skills/doctor) skill reference. The main page carries the skill itself; this page holds material that used to sit at the bottom of it.

### Version Compatibility

## Prompt Caching Recommendation

For API-key, Bedrock, Vertex, or Foundry users running long OrchestKit sessions (brainstorm, implement, cover chains), enable 1-hour prompt caching:

```bash
export ENABLE_PROMPT_CACHING_1H=1
```

This extends the prompt cache TTL from 5 minutes to 1 hour, significantly reducing token costs when:
- Returning to a session after brief breaks
- Running multi-phase skills that exceed the 5-minute cache window
- Using `/loop` or scheduled tasks with intervals > 5 minutes

Measured 2026-09-02 (#3876): on a subscription the main conversation already writes with the 1-hour cache (94% of writes carried `ephemeral_1h_input_tokens` with no setting present), subagents write with 5 minutes, and subagent turns after a 5 to 60 minute gap are 0.2% of turns and 2.8% of write tokens, below the roughly 38% where a 1-hour subagent TTL breaks even. `scripts/measure-cache-gaps.py` reproduces the table from local transcripts; the 2.1.243 keys `promptCacheTtl` and `subagentPromptCacheTtl` stay unset.

**Note:** Since CC 2.1.110, session recap is enabled by default even with telemetry disabled. Opt out via `/config` or `CLAUDE_CODE_ENABLE_AWAY_SUMMARY=0`. On CC 2.1.108-2.1.109, users with `DISABLE_TELEMETRY=1` must set `CLAUDE_CODE_ENABLE_AWAY_SUMMARY=1` manually.

Doctor should check for this env var and recommend it when:
- User is on API key / Bedrock / Vertex / Foundry (not subscription)
- Session has been active for > 30 minutes
- `ENABLE_PROMPT_CACHING_1H` is not set

## Version Detection

The doctor skill checks the CC version at runtime:

```bash
# CC reports version via environment or CLI
claude --version  # Returns e.g. "2.1.47"
```

## Compatibility Levels

| CC Version | Support Level | Description |
|-----------|--------------|-------------|
| &lt; 2.1.7 | Unsupported | Core hook protocol missing |
| 2.1.7 - 2.1.44 | Degraded | Missing memory improvements, worktree fixes, Windows support |
| 2.1.45 - 2.1.46 | Partial | Missing 2.1.47 features but functional |
| 2.1.47 - 2.1.49 | Partial | All hook features, memory leak risk in long sessions |
| 2.1.50 - 2.1.58 | Partial | Memory leaks fixed, missing auto-memory and @imports |
| 2.1.59 - 2.1.62 | Partial | Auto-memory, @imports, missing HTTP hooks and 2.1.69 features |
| 2.1.63 - 2.1.68 | Partial | HTTP hooks, worktree config sharing, missing InstructionsLoaded/once:true/ask |
| >= 2.1.69 | Full | InstructionsLoaded, once:true, outputAsk, path-scoped rules |
| >= 2.1.72 | Full | ExitWorktree, agent model override, effort simplification, prompt cache 12x |
| >= 2.1.76 | Full | MCP elicitation, PostCompact hook, /effort command |
| >= 2.1.78 | Full | StopFailure event, CLAUDE_PLUGIN_DATA, agent effort/maxTurns frontmatter |
| >= 2.1.80 | Full | rate_limits in StatusLine, skill effort frontmatter, --channels preview |
| >= 2.1.83 | Full | CwdChanged/FileChanged events, managed-settings.d/, sandbox.failIfUnavailable |
| >= 2.1.84 | Full | TaskCreated event, paths: glob, CLAUDE_STREAM_IDLE_TIMEOUT_MS, MCP non-blocking startup |
| >= 2.1.85 | Full | PreToolUse for AskUserQuestion, headless responder hooks |
| >= 2.1.86 | Full | Config disk write fix, Write/Edit outside project root |
| >= 2.1.75 | Full++++++ | 1M context default, memory timestamps, hook source display, token estimation fix |
| >= 2.1.76 | Full+++++++ | PostCompact hook, Elicitation hooks, worktree.sparsePaths, /effort, bg agent partial results |
| >= 2.1.77 | Full++++++++ | 64k/128k output, allowRead sandbox, plugin validate, SendMessage auto-resume, PreToolUse deny fix |
| >= 2.1.78 | Full+++++++++ | StopFailure hooks, CLAUDE_PLUGIN_DATA, agent frontmatter, plugin validate, worktree skills fix |
| >= 2.1.79 | Full++++++++++ | --console auth, /remote-control, multi-dir PLUGIN_SEED_DIR, turn duration toggle |
| >= 2.1.80 | Full+++++++++++ | rate_limits statusline, effort frontmatter, --channels, source:settings marketplace, --resume parallel fix |
| >= 2.1.81 | Full++++++++++++ | --bare eval mode, --channels permission relay, plugin re-clone freshness, worktree resume, bg agent race fix |
| >= 2.1.83 | Full+++++++++++++ | managed-settings.d/, CwdChanged/FileChanged hooks, sandbox.failIfUnavailable, initialPrompt, userConfig, env scrub |
| >= 2.1.84 | Full++++++++++++++ | TaskCreated hook, WorktreeCreate HTTP, paths: globs, ANTHROPIC_DEFAULT_*, stream timeout, MCP 2KB cap, json-schema fix |
| >= 2.1.88 | Full+++++++++++++++ | PermissionDenied hook, auto permission mode, absolute file_path, compound if matching, NO_FLICKER |
| >= 2.1.89 | Full++++++++++++++++ | defer permission, TaskCreated blocking, MCP_CONNECTION_NONBLOCKING, named subagent typeahead, hook disk spill |
| >= 2.1.90 | Full+++++++++++++++++ | /powerup, PLUGIN_KEEP_MARKETPLACE, .husky protected, exit code 2 fix, format-on-save fix, 3x perf |
| >= 2.1.91 | Full | MCP result size override, disableSkillShellExecution, plugin bin/, Edit shorter anchors, transcript fix |
| >= 2.1.92 | Full | forceRemoteSettingsRefresh, Stop hook preventContinuation fix, tool input JSON-string fix, Write perf, tmux pane fix |
| >= 2.1.94 | Full | Skill frontmatter hooks fix (unlocks 20 context loaders), sessionTitle hook output, keep-coding-instructions, default effort high, rate-limit 429 surface, --resume across worktrees, CJK stream-json fix |
| >= 2.1.95 | Full | MCP tool description 2KB cap, local MCP config dedup (npm-only release) |
| >= 2.1.96 | Full | Bedrock bearer token 403 hotfix (2.1.94 regression) |
| >= 2.1.97 | Full | refreshInterval status line, workspace.git_worktree, Stop/SubagentStop long-session fix, subagent cwd leak fix, plugin update fix, Bash permissions hardened, TRACEPARENT OTEL, image compression parity, 429 exponential backoff, MCP memory leak fix, transcript optimization |
| >= 2.1.101 | Full | /team-onboarding, OS CA cert trust, deny-overrides-ask, subagent dynamic MCP, worktree agent file access, focus mode summaries, settings resilience |
| >= 2.1.105 | Full | EnterWorktree path param, PreCompact blocking (exit code 2 / decision:block), plugin monitors manifest, skill description cap 1536 chars, WebFetch script stripping, stale worktree squash cleanup |
| >= 2.1.108 | Full | ENABLE_PROMPT_CACHING_1H for 1-hour cache TTL (major cost savings), /recap session context restoration, Skill tool auto-discovery of built-in commands, model switch warning, lazy language grammars (lower memory), rate limit distinction, agent auto-classifier fix |
| >= 2.1.110 | Full | /tui fullscreen rendering, PushNotification tool for long sessions, /focus command (replaces Ctrl+O), Bash max timeout enforced, Write user-edit signal, session recap default-on (no env var needed), --resume resurrects scheduled tasks, /doctor MCP duplicate warning, Remote Control commands (/autocompact, /context, /exit, /reload-plugins), SDK TRACEPARENT/TRACESTATE auto-propagation |
| >= 2.1.251 | **Minimum (current floor)** | **OrchestKit's supported floor. Anything below is unsupported. `shared/cc-support.json` is the single source of truth; this row mirrors it.** |

## Doctor Check Implementation

The doctor skill validates CC version in category 10:

```
Claude Code: 2.1.251 (OK)
- Minimum required: 2.1.251
```

When CC version is below the floor, doctor should show the shortfall. Example on a
much older build, where the missing-feature list is long enough to be useful:

```
Claude Code: 2.1.44 (DEGRADED)
- Minimum required: 2.1.251
- Missing features:
  - last_assistant_message (Stop/SubagentStop context)
  - added_dirs (multi-directory support)
  - Windows hook execution
  - Worktree discovery
  - Deferred SessionStart
- Upgrade: npm install -g @anthropic-ai/claude-code@latest
```

## Memory Leak Warning (CC &lt; 2.1.50)

CC 2.1.50 fixed 8 memory leaks affecting long-running sessions:
- Agent teams: completed teammate tasks never garbage collected
- Task state objects never removed from AppState
- TaskOutput retained data after cleanup
- CircularBuffer cleared items retained in backing array
- Shell execution: ChildProcess/AbortController refs retained after cleanup
- LSP diagnostic data never cleaned up after delivery
- File history snapshots: unbounded growth
- Internal caches not cleared after compaction (fixed in 2.1.63)

**Recommendation:** If CC version &lt; 2.1.50, warn user to upgrade for long sessions.

Doctor should display when CC &lt; 2.1.50:

```
Claude Code: 2.1.4x (MEMORY LEAK RISK)
- 8 memory leaks fixed in 2.1.50 affect long-running sessions
- Symptoms: increasing memory usage, slower responses over time
- Upgrade: npm install -g @anthropic-ai/claude-code@latest
```

## OrchestKit Version History

| OrchestKit | Min CC | Key Changes |
|-----------|--------|-------------|
| v10.0.0-alpha.6x | 2.1.251 | **CC 2.1.252 + 2.1.257 adoption (2026-09-01): `latest_known` 2.1.252 → 2.1.257, `supported_floor` STAYS 2.1.251 (latest_known-only bump; the 2026-08-29 `manual_override` pins floor=latest=2.1.251 until 2026-11-20). 2.1.253 to 2.1.256 were never published. 2.1.257 triaged into 32 rows (`shared/cc-adoption-gaps.json`, `docs/audits/cc-adoption-2.1.252-257-triage-2026-09-01.md`): adopted `claude-fable-5-1` in the model vocab and CI allowlist ($0.25/MTok cache reads); documented `timeFormat`/`timeZone`, `permissions.blockReadsOutsideWorkingDirectories`, `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, the project-scope `bypassPermissions` change and `/effort s` in configure; free upgrades for the 25 `isolation: worktree` agents (non-git Bash loops and heredocs no longer refused; common `.git` stays writable after `cd`), the CC-native `Read()` deny rules (`&lt; file`, `tac`, `egrep` now covered), auto-mode `permissions.ask` in compound commands, and the Containment Escape auto-mode rule (metadata-credential fetches, which `network-egress-guard` never covered). Watch: `claude -p` now waits for an armed Monitor, so headless callers with an outer timeout can hit it.** |
| v10.0.0-alpha.7x | 2.1.251 | **CC 2.1.258 adoption (2026-09-02): `latest_known` 2.1.257 to 2.1.258, `supported_floor` STAYS 2.1.251 (latest_known-only bump; the 2026-08-29 `manual_override` pins floor=latest=2.1.251 until 2026-11-20). 2.1.258 is two fixes, triaged into 2 rows (`shared/cc-adoption-gaps.json`, `docs/audits/cc-adoption-2.1.258-triage-2026-09-02.md`): the macOS 12 (Monterey) launch regression from the unpublished 2.1.255 build is a noop for ork (no OS-version surface); the remote/scheduled-session "user messages must have non-empty content" fix after a re-sent permission approval is a free upside (ork drives only local `claude -p`, never remote or scheduled sessions). Nothing adopted in code, nothing deferred.** |
| v10.0.0-alpha.8x | 2.1.251 | **CC 2.1.259 to 2.1.261 adoption (2026-09-05): `latest_known` 2.1.258 to 2.1.261, `supported_floor` STAYS 2.1.251 (latest_known-only bump; the 2026-08-29 `manual_override` pins floor=latest=2.1.251 until 2026-11-20). 170 changelog bullets triaged into 42 rows (`shared/cc-adoption-gaps.json`, `docs/audits/cc-adoption-2.1.259-261-triage-2026-09-05.md`): 9 adopted-doc, 3 deferred-S, 1 watch, 21 upside, 8 noop; nothing adopted in code. Unlike 2.1.253 to 2.1.258 this wave is NOT a no-op for ork: 2.1.259 makes the frontmatter `model:` pin in 39 ork skills actually take effect in interactive sessions (it was silently ignored before), and fixes concurrent sessions reverting each other's `~/.claude.json`; 2.1.260 makes `Skill(name)` deny rules cover the `&lt;dir&gt;:name` form that all 106 ork skills use (so `Skill(audit-full)` previously denied nothing), unbreaks `blockReadsOutsideWorkingDirectories` hiding a worktree-isolated subagent's own checkout (25 ork agents), removes the one-hour cap on subagent background commands, and closes a zsh REPORTTIME command-substitution auto-approve that ork's 20 security suites do not probe; 2.1.261 adds `/skill-doctor` (native unused-skill and context-cost measurement, which ork's 106-skill surface wants and its own `audit-activation` only approximates), adds `bashOutputMaxChars`/`taskOutputMaxChars`, makes `keybindingFlavor` inert (so ork's 2.1.238 adoption note is now stale), and stops auto mode auto-approving a URL that packs content into a public diagram renderer, which would gate `validateMermaidViaAPI` in `src/hooks/src/lib/decision-history.ts:803` if that dead export were ever wired up. Watch: nothing in this wave is safe to assume below the 2.1.251 floor.** |
| v10.0.0-alpha.8x | 2.1.251 | **CC 2.1.262 + 2.1.263 adoption (2026-09-06): `latest_known` 2.1.261 to 2.1.263, `supported_floor` STAYS 2.1.251 (latest_known-only bump; the 2026-08-29 `manual_override` pins floor=latest=2.1.251 until 2026-11-20). Two findings, 1 triaged row (`shared/cc-adoption-gaps.json`, `docs/audits/cc-adoption-2.1.262-263-triage-2026-09-06.md`): 2.1.262 was NEVER PUBLISHED (the upstream CHANGELOG jumps 2.1.261 straight to 2.1.263, same shape as the 2.1.192 and 2.1.253-to-2.1.256 gaps), and 2.1.263 is a single unenumerated bullet, "Bug fixes and reliability improvements", naming no settings key, hook event, tool, permission surface, CLI flag, env var, MCP surface or model id. Filed `triaged-noop` with an explicit verdict rather than left as the empty `features: []` the watcher generates, because a blank array and a triaged-empty result are indistinguishable to a later reader. The emptiness is a measurement, not a failed fetch: the same live run of `cc-release-watch.mjs` parsed 37, 66 and 67 raw bullets for 2.1.259, 2.1.260 and 2.1.261 against 1 for 2.1.263. Nothing adopted, nothing deferred, no new matrix entries.** |
| v9.6.x | 2.1.220 | **CC 2.1.221 + 2.1.222 adoption: `latest_known` 2.1.220 → 2.1.222, `supported_floor` STAYS 2.1.220 (latest_known-only bump — the 2026-07-25 `manual_override` pins floor=latest=2.1.220 until 2026-09-20), 19 new matrix entries. Highest-signal rows: 2.1.222 extends worktree isolation to file edits and Bash in EVERY session type including subagents, closing the last gap in the 2.1.154 → 2.1.203 → 2.1.210 → 2.1.212 lineage for ork's 25 `isolation: worktree` agents; 2.1.222 stops PreToolUse auto-allow hooks bypassing tool restrictions in background agent tasks; 2.1.222 tells Claude to ask the user to run a `disable-model-invocation` skill instead of replicating it (33 ork skills); 2.1.221 makes plugin skills named after terminal-only built-ins invocable in non-interactive sessions, which un-breaks `/ork:help` headless. Also documented: gateway keep-alive vs `CLAUDE_STREAM_IDLE_TIMEOUT_MS`, `SendMessage` summary truncation, auto-mode classification of `SendMessage`, `/usage` MCP attribution fix, Remote Control auto-start becoming user-scope only, `--mcp-config` connecting before the first `-p` turn, the zsh `[[ ]]` Bash permission bypass fix, and ultraplan removal** |
| v7.83.x | 2.1.125 | **M131 — CC 2.1.128 adoption (1 PR): floor 2.1.122 → 2.1.125, latest 2.1.126 → 2.1.128, 7 new matrix entries (`enter_worktree_branch_from_head`, `workspace_reserved_mcp_name`, `plugin_dir_zip_archives`, `channels_console_auth`, `init_plugin_errors_plugin_dir`, `subagent_idle_summary_capped`, `plugin_update_npm_detection_fix`); release-engineer agent documents `.zip` plugin distribution path; setup skill documents `channelsEnabled: true` for `--channels` + console auth; eval-runner agent picks up expanded `init.plugin_errors` covering `--plugin-dir` failures (was marketplace-only since 2.1.111); EnterWorktree branch-from-HEAD audit confirmed no stale "commit before worktree" guidance across 38 skill/agent mentions; M128 backfill of 2.1.122/2.1.126 matrix entries deferred (features adopted in skills/docs without runtime gates)** |
| v7.80.x | 2.1.122 | **M128 — CC 2.1.122 + 2.1.126 adoption (5 issues, 1 PR): floor 2.1.118 → 2.1.122, OTEL `invocation_trigger` attribute on `claude_code.skill_activated` (CC 2.1.126) surfaced in `/ork:analytics` skill-trigger breakdown, `claude project purge --dry-run` wired into `/ork:doctor` stale-project diagnostic + `/ork:dream` summary hint, `--dangerously-skip-permissions` scope expansion (`.git/`, `.vscode/`, shell rcs) documented in security-patterns/setup/hooks-README, OTEL numeric-attr type-safe ingestion verified for CC 2.1.122+, `claude_code.at_mention` event ingestion decision recorded** |
| v7.70.x | 2.1.118 | **M122 — CC 2.1.118 + 2.1.119 adoption (8 issues, 1 PR): floor 2.1.117 → 2.1.118, 17 new matrix entries, PostToolUse `duration_ms` threaded through posttool hooks, OTEL `tool_use_id` + `tool_input_size_bytes` documented, `--from-pr` multi-host (GitLab/Bitbucket/GHE) in review-pr/create-pr/fix-issue, `--print` honors agent `tools:`/`disallowedTools:` in bare-eval, pilot adoption of `type: "mcp_tool"` hook type, `claude plugin tag` wired into release-please workflow, three new chain-patterns refs (mcp-tool-hooks.md, pr-from-platform.md, plugin-tag.md)** |
| v7.69.x | 2.1.117 | **M117 closeout (2 issues, 1 PR): `/ork:doctor` warns on HIGH-tier MCP `@latest` pinning (closes #1462), fast-check property tests for 9 hook handlers + input validator (closes #1452), defensive-input hardening tracked separately as #1497 in M119** |
| v7.50.x | 2.1.111 | **CC 2.1.111 + Opus 4.7 adoption (23 issues, 1 PR): MIN_CC_VERSION 2.1.108 → 2.1.111, 17 new matrix entries (311 total), `xhigh` effort tier across 7 phase-based skills, token budgets converted to %-of-context via new `lib/context-window.ts`, `ork:review-pr` composes `/ultrareview` gated by sensitive-path/diff-size triggers via `AskUserQuestion`, eval preflight catches `plugin_errors` on stream-json init, 2,576px vision ceiling in design/UI skills, doctor Category 14 detects xhigh-without-Opus-4.7, retry-policy audit with rationale comments** |
| v7.44.x | 2.1.108 | **CC 2.1.108 adoption: 25 new matrix entries (278 total), ENABLE_PROMPT_CACHING_1H env var, /recap session context, Skill tool auto-discovery, model switch warning, lazy language grammars, EnterWorktree path param, PreCompact blocking, plugin monitors manifest key, skill description cap 1536 chars, expanded 11 user-invocable skill descriptions** |
| v7.38.x | 2.1.101 | **CC 2.1.101 adoption + frontmatter audit: 26 skill frontmatter fixes (context/agent fields now enforced), deny-overrides-ask behavior, subagent dynamic MCP inheritance, worktree agent file access, /team-onboarding command, OS CA cert trust, focus mode self-contained summaries, RemoteTrigger run fix, settings resilience, 18 new matrix entries (253 total)** |
| v7.37.x | 2.1.98 | **CC 2.1.98 adoption: Monitor tool for streaming background events, SCRIPT_CAPS env var, partial progress from failed bg subagents, hook stderr in transcript, /agents tabbed layout, /reload-plugins skill discovery, Bash permission hardening (backslash escape fix, compound cmd fix), stale worktree cleanup fix, team permission inheritance, Vertex AI wizard, Perforce mode** |
| v7.33.x | 2.1.97 | **CC 2.1.97 full utilization: refreshInterval status line, workspace.git_worktree awareness, TRACEPARENT OTEL tracing to HQ, Stop/SubagentStop long-session fix, subagent cwd leak fix, MCP 2KB cap guardrail, image compression parity, Bash permissions hardened, Accept Edits env-prefix, plugin update fix, prototype settings.json fix** |
| v7.30.x | 2.1.94 | **Skill frontmatter hooks unlock (20 context loaders activated), sessionTitle on UserPromptSubmit, keep-coding-instructions, default effort high adaptation, --resume across worktrees, CJK stream-json fix, Bedrock bearer token 2.1.96 hotfix** |
| v7.29.x | 2.1.92 | forceRemoteSettingsRefresh policy, Stop hook preventContinuation fix, tool input JSON-string fix, plugin MCP dedup fix, Write perf 60%, /tag + /vim removed, MCP result size override, disableSkillShellExecution, plugin bin/, Edit shorter anchors |
| v7.27.x | 2.1.90 | /powerup, PLUGIN_KEEP_MARKETPLACE, .husky protected, exit code 2 fix, format-on-save fix, 3x perf improvements |
| v7.24.x | 2.1.84 | TaskCreated hook, WorktreeCreate HTTP, paths: glob lists, ANTHROPIC_DEFAULT_* env vars, stream idle timeout, json-schema fix |
| v7.23.x | 2.1.83 | managed-settings.d/, CwdChanged/FileChanged hooks, sandbox.failIfUnavailable, initialPrompt, userConfig sensitive, env scrub |
| v7.15.x | 2.1.80 | effort frontmatter, rate_limits statusline, --channels, source:settings, simplified plugin tips |
| v7.14.x | 2.1.79 | --console auth, /remote-control, multi-dir PLUGIN_SEED_DIR, turn duration toggle |
| v7.14.x | 2.1.78 | StopFailure hooks, CLAUDE_PLUGIN_DATA, agent frontmatter, plugin validate, worktree skills fix |
| v7.12.x | 2.1.77 | 64k/128k output, allowRead sandbox, plugin validate, SendMessage auto-resume, PreToolUse deny fix |
| v7.8.x | 2.1.76 | PostCompact hook, Elicitation hooks, sparse paths, /effort, bg agent partial results |
| v7.7.x | 2.1.75 | 1M context default, memory timestamps, hook source display, token estimation fix |
| v7.5.x | 2.1.74 | SessionEnd timeout fix, managed policy precedence, full model IDs, memory fixes |
| v7.4.x | 2.1.73 | Deadlock fix, SessionStart fix, no-op fix, Opus 4.6 cloud default |
| v7.1.x | 2.1.69 | InstructionsLoaded, once:true loaders, outputAsk, env var HTTP hooks, worktree dedup |
| v7.0.x | 2.1.59 | Auto-memory, @imports, ConfigChange, HTTP hooks (2.1.63+), unified plugin |
| v6.0.x | 2.1.47 | Full CC 2.1.47 adoption, relaxed context limits |
| v5.x | 2.1.34 | Agent Teams support, unified dispatchers |
| v4.x | 2.1.9 | Session tracking, TypeScript hooks |
