[BUG] Claude Code v2.1.24+ broken on macOS - cache_control.ephemeral.scope error
Status Closed — not planned
Reported on v2.1.25
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 14 comments · opened Feb 5, 2026 · closed Mar 24, 2026
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Anything later than v2.1.23 causes :
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"system.2.cache_control.ephemeral.scope: Extra inputs are not
permitted"},"request_id":"req_011CXoxb4QmrysjyNqcTUneF"}
What Should Happen?
Error: system.2.cache_control.ephemeral.scope: Extra inputs are not permitted
Details:
- Account: locotoki@gmail.com (Claude Max)
- Platform: macOS (M1), Portugal
- Works: v2.1.23 and earlier
- Broken: v2.1.24, 2.1.25, 2.1.28, 2.1.29, 2.1.31
- Same account works on Windows with v2.1.29
- CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 does NOT fix it
The "scope" field in cache_control.ephemeral appears to be rejected by my account's API endpoint. This may be region-specific or account-specific routing issue.
Error Messages/Logs
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"system.2.cache_control.ephemeral.scope: Extra inputs are not
permitted"},"request_id":"req_011CXoxb4QmrysjyNqcTUneF"}
Steps to Reproduce
anything later than v2.1.23 causes this error, for both Native and npm installation
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
v2.1.23
Claude Code Version
2.1.23 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
14 Comments
Found 1 possible duplicate issue:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
This is not a duplicate of #21612. Please remove the duplicate label before auto-close.
#21612 is about
context_management: Extra inputs are not permitted— a top-level parameter being rejected.My error is
system.2.cache_control.ephemeral.scope: Extra inputs are not permitted— a nested field inside the third system message's cache_control block. These are completely different fields, different code paths, and different root causes.Here's the proof:
1. Different error field
Search this entire repo for
cache_control.ephemeral.scope— you will find zero results besides this issue.2. #21612 workaround does NOT work here
Users in #21612 fixed their issue by downgrading to v2.1.20. For my issue, v2.1.23 is the last working version — every version after (v2.1.24, 2.1.25, 2.1.28, 2.1.29, 2.1.31, 2.1.32) produces the same error. Both native and npm installations are affected. Downgrading does not help.
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1also does not help (consistent with #20031).3. macOS-only — same account works on Windows
My exact same Claude Max account works perfectly on Windows with v2.1.29. On macOS (M1), the same account fails on every version after v2.1.23. This is a platform-specific bug. #21612 has no mention of OS-specific behavior.
4. Probable root cause
The
scopefield is related to the workspace-level cache isolation that went live on Feb 5, 2026 (per Anthropic's prompt caching docs). On macOS, Claude Code injects"scope": "..."intocache_control.ephemeralon system message blocks. On Windows, it doesn't. The API rejects the field because it doesn't expect it.This is a macOS-specific code path issue — not the same root cause as #21612.
Request
Please reopen this issue and remove the duplicate label. This is a distinct, reproducible, macOS-specific bug with a unique error signature. Auto-closing it into #21612 will bury it.
cc @anthropics/claude-code
Additional bug: v2.1.23 also broken — /plan mode corrupts message state
To compound the issue above, even v2.1.23 (the only version where basic requests work) has a separate critical bug:
After using
/planmode, exiting to execute corrupts the conversation history:What happens:
/planmode, generate a plantool_use_idcorruption error every timeNet result: I have ZERO fully working versions of Claude Code on macOS:
| Version | Status |
|---|---|
| v2.1.23 | Basic requests work, but
/plan→ execute transition corrupts state || v2.1.24–v2.1.32 | Completely broken —
cache_control.ephemeral.scopeerror on every request |I'm a paying Claude Max subscriber ($200/month) and Claude Code is essentially unusable on my primary development machine (macOS M1). A support ticket has also been filed via Intercom.
Additional bug: v2.1.23 also broken — /plan mode corrupts message state
Even v2.1.23 (the only version where basic requests work) has a separate critical bug:
After
/planmode, exiting to execute corrupts the conversation history:Repro steps:
/planmode, generate a planNet result — ZERO fully working versions on macOS:
| Version | Status |
|---|---|
| v2.1.23 | Basic requests work, but /plan to execute corrupts state |
| v2.1.24-v2.1.32 | Completely broken — cache_control.ephemeral.scope on every request |
Claude Max subscriber, Claude Code unusable on macOS M1. Support ticket also filed via Intercom.
Additional bug: v2.1.23 also broken
Even v2.1.23 (the only version where basic requests work) has a separate critical bug:
After
/planmode, exiting to execute corrupts the conversation history:Repro steps:
/planmode, generate a planNet result -- ZERO fully working versions on macOS:
| Version | Status |
|---|---|
| v2.1.23 | Basic requests work, but /plan to execute corrupts state |
| v2.1.24-v2.1.32 | Completely broken -- cache_control.ephemeral.scope on every request |
Claude Max subscriber, Claude Code unusable on macOS M1. Support ticket also filed via Intercom.
You can just go ahead disable prompt cache, then this issue will be fixed:
i am using litellm gateway, works on windows but fail on mac too.
export DISABLE_PROMPT_CACHING=1does solve the problem .But why we can't use
prompt_cacheing?Closing for now — inactive for too long. Please open a new issue if this is still relevant.
Saw similar but not exact same issue on 2.1.88
Either downgrade to 2.1.87, or setting
DISABLE_PROMPT_CACHING=1would fix. But never had to set DISABLE_PROMPT_CACHING before.I encountered the same problem when using Claude Code for VSCode on an x86 Ubuntu server. I added "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1" to the "env" in ~/.claude/settings.json, and then it worked.
<img width="645" height="504" alt="Image" src="https://github.com/user-attachments/assets/e77b3f3b-777a-4012-a1fe-1c4acfbe20be" />
+1, can be reproduced on
2.1.88VS Code extension. AddingCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASto~/.claude/settings.jsonfix the issue:<img width="343" height="284" alt="Image" src="https://github.com/user-attachments/assets/e5149fab-6eb7-4fe1-8c7a-377b9d44d5be" />
Getting this error too running enterprise Claude. disabling prompt cache fixed it but i guess wastes our tokens...
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 solves this issue. Version: 2.1.96
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.