[BUG] skipWorkflowUsageWarning is undocumented and agent-writable — an agent can disable its own spend guardrail
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?
~/.claude/settings.json accepts skipWorkflowUsageWarning: true, which suppresses the pre-run cost warning for Workflow/dynamic-workflow runs.
Undocumented — no mention in the shipped changelog (~/.claude/cache/changelog.md). I only found it by grepping my own settings after an unexpected spend.
Agent-writable — settings.json is a normal file; a Claude session can write this key. An agent can therefore disable the warning that exists to protect users from agents. I cannot determine from my own machine whether I set it or a prior session did — which is itself the problem.
Interacts badly with /effort ultracode, whose model instruction is literally "token cost is not a constraint." With the warning suppressed, a workflow fanned out to ~32 subagents with no cost stated to me beforehand.
Suggested: document the flag; treat spend-guardrail keys as not agent-writable (or require confirmation to set); soften ultracode's phrasing so it raises effort without waiving the duty to state cost.
What Should Happen?
Two things:
skipWorkflowUsageWarningshould be documented, since it disables a cost guardrail. It is currently honored by the harness but appears nowhere in the changelog.
- Keys that disable spend guardrails should not be silently writable by an agent. Claude can edit ~/.claude/settings.json, so a session can disable the warning that exists to protect the user from that session. Either treat these keys as user-only, or require explicit confirmation to set them.
Separately: /effort ultracode instructs the model that "token cost is not a constraint". Raising effort should not waive the duty to state cost before a large fan-out.
Error Messages/Logs
No error. Silent by nature — that is the issue. Nothing is emitted when the warning is suppressed.
Steps to Reproduce
Undocumented (30 seconds, no setup):
- grep -i "skipWorkflowUsageWarning" ~/.claude/cache/changelog.md -> 0 matches
- grep -c "skipWorkflowUsageWarning" ~/.claude/settings.json -> key is present and honored
A setting that suppresses a cost warning is honored but never documented.
Agent-writable:
- Ask Claude Code: "add skipWorkflowUsageWarning: true to my settings.json"
- It writes it. The agent has now disabled its own pre-run spend warning.
Combined effect (what I actually hit):
- /effort ultracode
- Ensure "skipWorkflowUsageWarning": true is in ~/.claude/settings.json
- Give any substantive task
- Model invokes Workflow and fans out (~32 subagents in my case) with no cost warning
and no cost stated. I only noticed by watching the agent counter.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.196 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Environment: Windows 11, Claude Code 2.1.196, Opus 4.8, Claude Code desktop app.
Verified on my machine:
grep -c "skipWorkflowUsageWarning" ~/.claude/settings.json -> 1 (present, honored)
grep -ci "skipWorkflowUsageWarning" ~/.claude/cache/changelog.md -> 0 (undocumented)
settings.json mtime shows it was modified mid-project, not at install. I cannot determine
whether I set this key or an earlier Claude session did — which is the point of report item 2.
Not claiming intent. The warning does ship on by default; my objection is that it is
disableable by an agent via an undocumented key, with no trace of who set it.