[BUG] skipWorkflowUsageWarning is undocumented and agent-writable — an agent can disable its own spend guardrail

Status Open
Reported on v2.1.196
Maintainer reply None cached
Activity 0 comments · opened Jul 16, 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?

~/.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:

  1. skipWorkflowUsageWarning should be documented, since it disables a cost guardrail. It is currently honored by the harness but appears nowhere in the changelog.
  1. 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):

  1. grep -i "skipWorkflowUsageWarning" ~/.claude/cache/changelog.md -> 0 matches
  2. 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:

  1. Ask Claude Code: "add skipWorkflowUsageWarning: true to my settings.json"
  2. It writes it. The agent has now disabled its own pre-run spend warning.

Combined effect (what I actually hit):

  1. /effort ultracode
  2. Ensure "skipWorkflowUsageWarning": true is in ~/.claude/settings.json
  3. Give any substantive task
  4. 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.

View original on GitHub ↗