[BUG] Skill tool broken in headless (`claude -p`) mode since v2.1.141 — returns is_error, skill body never loaded

Status Fixed / completed
Reported on v2.1.142
Maintainer reply ✓ Yes — claude[bot]
Activity 4 comments · opened May 16, 2026 · closed May 19, 2026
💡 Likely answer: A maintainer (claude[bot], contributor) responded on this thread — see the highlighted reply below.

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?

Since v2.1.141, the Skill tool no longer works in headless / print mode (claude -p). When a skill is invoked, the Skill tool call returns is_error: true and the skill body is never loaded into context — the tool result content is just the literal label Execute skill: <name>.

The exact same invocation works correctly in v2.1.140 and earlier. There the result is is_error: null with content Launching skill: <name> and the skill instructions are loaded as expected.

The skill itself is correctly registered — it appears in the session-init skills list and in slash_commands, the Skill tool is present in tools, and (for plugin skills) the plugin shows as connected. Nothing about discovery is broken; only execution in -p mode fails.

Interactive (TUI) skill invocation is unaffected. This is specific to non-interactive -p / --print runs, which is what breaks CI and orchestration workflows that depend on skills.

What Should Happen?

Invoking the Skill tool in claude -p should execute the skill and load its instructions into context — identical to interactive mode and identical to the behavior in v2.1.140 and earlier. The tool result should be is_error: null / Launching skill: <name>.

Error Messages/Logs

# Skill tool result in the stream-json output (v2.1.141, 2.1.142, 2.1.143):
{"type":"tool_result","is_error":true,"content":"Execute skill: figma:figma-use","tool_use_id":"toolu_..."}

# The model then gives up on the skill:
"The figma:figma-use skill failed to load."

# Same call on v2.1.140 and v2.1.139 (working):
{"type":"tool_result","is_error":null,"content":"Launching skill: figma:figma-use","tool_use_id":"toolu_..."}

Steps to Reproduce

  1. Install/enable a plugin that ships a skill. I used the official figma plugin (v2.1.30), which provides the figma:figma-use skill. (A non-plugin user/project skill reproduces it just as well.)
  1. Run a headless invocation that asks the model to call the Skill tool:

``bash
claude -p 'Use the Skill tool to invoke the skill named "figma:figma-use" as your very first action, then report whether it succeeded.' \
--output-format stream-json --verbose \
--max-turns 4 --permission-mode acceptEdits \
--setting-sources project,local \
--model claude-haiku-4-5-20251001
``

  1. Inspect the Skill tool result in the stream-json output.
  • v2.1.140 and earlier: is_error: null, content Launching skill: figma:figma-use, skill body loaded. ✅
  • v2.1.141, 2.1.142, 2.1.143: is_error: true, content Execute skill: figma:figma-use, skill body never loaded. ❌

I bisected every build between the last-good and current version with this identical repro:

| Version | Skill in claude -p | Result |
| --- | --- | --- |
| 2.1.139 | ✅ works | is_error: null — Launching skill: figma:figma-use |
| 2.1.140 | ✅ works | is_error: null — Launching skill: figma:figma-use |
| 2.1.141 | ❌ broken | is_error: true — Execute skill: figma:figma-use |
| 2.1.142 | ❌ broken | is_error: true — Execute skill: figma:figma-use |
| 2.1.143 | ❌ broken | is_error: true — Execute skill: figma:figma-use |

Last good: 2.1.140. First bad: 2.1.141.

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.140

Claude Code Version

2.1.143 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Non-interactive/CI environment

Additional Information

  • Model-independent. Reproduced with both Opus and Haiku — this is a harness / tool-execution-layer issue, not a model behavior issue.
  • Likely the same root cause as #59105. The 2.1.140 → 2.1.141 boundary lines up exactly with v2.1.141 reclassifying non-TTY claude -p runs as sdk-cli and diverging them from the interactive request scaffold. This report is a concrete, user-visible symptom of that change.
  • Related (not duplicate): #58535 reports forked-skill dispatch breaking around v2.1.139–2.1.140 in the VS Code extension. That is a different surface (VS Code extension vs. CLI -p) and a different failure mode (Agent()-spawned subagent loses skill context vs. the Skill tool returning is_error), but it appears to be part of the same cluster of skill regressions in the v2.1.139–2.1.143 range.
  • Impact. Any headless / CI / multi-agent-orchestration workflow that relies on skills silently degrades on 2.1.141+: the agent receives an error instead of the skill and proceeds without the guidance the skill was meant to inject. In my case, ~95 successful headless skill invocations across v2.1.112 → v2.1.139 all broke at once after upgrading to 2.1.143.

View original on GitHub ↗

4 Comments

github-actions[bot] · 5 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/36570
  2. https://github.com/anthropics/claude-code/issues/44756
  3. https://github.com/anthropics/claude-code/issues/32184

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

Ornolfr · 5 months ago

Thanks for the triage — but this is not a duplicate of any of the three linked issues. They describe a different failure at a different layer.

#36570, #32184, and #44756 are all about skill auto-triggering / recall — the model not deciding to invoke a skill from its description in headless mode (trigger_rate: 0, "recall 0%"). #44756 in particular explicitly states that claude -p "/my-skill" does execute the skill correctly — its actual bug is --print vs -p flag confusion.

This report is the opposite layer: the model does explicitly invoke the Skill tool, and the tool call itself fails — it returns is_error: true with the body Execute skill: <name>, and the skill is never loaded. That's a tool-execution failure, not a triggering/recall failure.

Two things that further distinguish it:

  • It's a clean bisected regression at v2.1.141. v2.1.140 and earlier work (is_error: null / Launching skill: <name>); v2.1.141, 2.1.142, and 2.1.143 all fail. The three linked issues are from March/early-April (v2.1.80-era) and aren't framed as a 2.1.141 regression — #44756 actually documents claude -p skills working at that time, consistent with the break landing later.
  • The repro here uses an explicit Skill tool call, so skill-description quality (the subject of #36570 and #32184) is irrelevant to it.

Please keep this open. Happy to attach stream-json captures from a passing (2.1.140) and failing (2.1.143) run if that helps.

claude[bot] contributor · 4 months ago

This issue was fixed as of version 2.1.144.

github-actions[bot] · 3 months ago

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.