{"name":"CLAUDE_CODE_PROMPT_CACHE_TTL","slug":"claude-code-prompt-cache-ttl","family":"env","title":"Environment variables","noun":"environment variable","description":"You can pin the prompt cache to five minutes or an hour, separately for subagents.","description_source":"entry","described_by":{"version":"2.1.242","anchor":"prompt-cache-lifetime-is-now-configurable"},"presence":{"first_seen":"2.1.242","removed_in":null,"in_current_build":true,"newest_mined":"2.1.308","builds":56,"mined_builds":149,"first_cited":null},"aliases":[],"entries":[{"version":"2.1.300","anchor":"new-env-var-claude-code-messages-prompt-cache-ttl-added-to-a","heading":"New CLAUDE_CODE_MESSAGES_PROMPT_CACHE_TTL environment variable","line":"A new environment variable, `CLAUDE_CODE_MESSAGES_PROMPT_CACHE_TTL`, sits alongside the existing prompt cache lifetime settings","released_at":"2026-10-14 14:27:26","reason":"found in this entry's text, named in this entry"},{"version":"2.1.300","anchor":"new-env-var-claude-code-messages-prompt-cache-ttl-forces-the","heading":"Main-conversation prompt caching can be forced to five minutes","line":"Setting `CLAUDE_CODE_MESSAGES_PROMPT_CACHE_TTL` to `5m` makes the main conversation's prompt cache last 5 minutes instead of the usual length","released_at":"2026-10-14 14:27:26","reason":"found in this entry's text"},{"version":"2.1.248","anchor":"agents-can-set-their-own-prompt-cache-lifetime-in-frontmatte","heading":"Agents can set their own prompt cache lifetime in frontmatter","line":"An agent file can set its own prompt cache lifetime under experimental cacheTtl.","released_at":"2026-08-27 20:35:36","reason":"found in this entry's text"},{"version":"2.1.242","anchor":"prompt-cache-lifetime-is-now-configurable","heading":"Prompt cache lifetime is now configurable","line":"You can pin the prompt cache to five minutes or an hour, separately for subagents.","released_at":"2026-08-24 19:16:14","reason":"named in this entry, found in this entry's text"}],"entries_total":4,"docs":[{"source":"claude-code","path":"agent-sdk\/cost-tracking","title":"Track cost and usage","documented":false},{"source":"claude-code","path":"prompt-caching","title":"How Claude Code uses prompt caching","documented":false},{"source":"claude-code","path":"settings-reference","title":"All settings","documented":false}],"docs_total":3,"gates":[],"related":[{"name":"CLAUDE_CODE_3P_PROBE_WROTE_HAIKU_DEFAULT","slug":"claude-code-3p-probe-wrote-haiku-default","description":"If your cloud account cannot use a model, Claude Code can step down to the next one; `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` turns this off"},{"name":"CLAUDE_CODE_3P_PROBE_WROTE_OPUS_DEFAULT","slug":"claude-code-3p-probe-wrote-opus-default","description":"Internal marker on third-party providers. When Claude Code itself writes `ANTHROPIC_DEFAULT_OPUS_MODEL` into its environment (the model availability probe on Bedrock, Vertex or Mantle, or a move down the model fallback ladder), it sets this variable to the same model ID. An `ANTHROPIC_DEFAULT_OPUS_MODEL` equal to it is treated as Claude Code's own choice rather than a user pin: it does not count as pinned, the probe does not skip it, and the fallback ladder may move it."},{"name":"CLAUDE_CODE_3P_PROBE_WROTE_SONNET_DEFAULT","slug":"claude-code-3p-probe-wrote-sonnet-default","description":"On third-party providers, Haiku model names are no longer skipped by the check that sets up the Sonnet default model"},{"name":"CLAUDE_CODE_3P_SEEDED_OPUS_DEFAULT","slug":"claude-code-3p-seeded-opus-default","description":"If your cloud account cannot use a model, Claude Code can step down to the next one; `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` turns this off"},{"name":"CLAUDE_CODE_3P_SEEDED_SONNET_DEFAULT","slug":"claude-code-3p-seeded-sonnet-default","description":"If your cloud account cannot use a model, Claude Code can step down to the next one; `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` turns this off"},{"name":"CLAUDE_CODE_ACCESSIBILITY","slug":"claude-code-accessibility","description":"Set to `1` to keep the native terminal cursor visible and disable the inverted-text cursor indicator. Allows screen magnifiers like macOS Zoom to track cursor position"},{"name":"CLAUDE_CODE_ACCOUNT_TAGGED_ID","slug":"claude-code-account-tagged-id","description":"Overrides the `user.account_id` attribute Claude Code attaches to its OpenTelemetry data. It applies only when an account UUID is known and `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` is not turned off (default on); when unset or empty, `user.account_id` is derived from the account UUID as a tagged ID of the form `user_01...`."},{"name":"CLAUDE_CODE_ACCOUNT_UUID","slug":"claude-code-account-uuid","description":"The device bridge is skipped entirely when the host's account UUID doesn't match the stored one."},{"name":"CLAUDE_CODE_ACT_DONT_REDERIVE","slug":"claude-code-act-dont-rederive","description":"Three existing feature gates moved position; their defaults are unchanged."},{"name":"CLAUDE_CODE_ACTION","slug":"claude-code-action","description":"Marks a run as coming from the Claude Code GitHub Action. A truthy value (`1`, `true`, `yes` or `on`) makes Claude Code set `CLAUDE_CODE_ENTRYPOINT` to `claude-code-github-action`, but only when `CLAUDE_CODE_ENTRYPOINT` is not already set and the command is not `claude mcp serve`. It is also reported as `isClaudeCodeAction` in the environment details attached to telemetry."}],"url":"https:\/\/changelogs.core-directive.com\/reference\/env\/claude-code-prompt-cache-ttl","family_url":"https:\/\/changelogs.core-directive.com\/reference\/env.json"}