[BUG] Skill frontmatter model:/effort: ignored when Claude invokes the skill via the Skill tool (applied on /skill-name)

Status Open
Reported on v2.1.287
Maintainer reply None cached
Activity 2 comments · opened Oct 2, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet (open duplicate #79664 was auto-closed as stale; see below)
  • [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?

A skill's model: and effort: frontmatter is applied when the user types /skill-name, but silently ignored when Claude invokes the same skill via the Skill tool. The turn keeps the session model and session effort.

Same bug as #79664 (labelled reproduced, regression; reproduced by a maintainer on v2.1.233), which was auto-closed as stale on 2026-09-23 with "open a new issue if this is still relevant". It is still present on 2.1.287. Narrower than #84262: the override is applied on the user-typed path.

What Should Happen?

Both invocation paths apply the override. The skills docs frontmatter reference says model is the "Model to use when this skill is active. The override applies for the rest of the current turn", and effort "Overrides the session effort level". Neither is limited to user-typed invocation.

Error Messages/Logs

# --debug-file, model-invoked path (no skill-model line at all):
[DEBUG] SkillTool returning 2 newMessages for skill model-probe
[DEBUG] [API:timing] dispatching to firstParty model=claude-sonnet-5-5

# --debug-file, user-invoked /model-probe:
[DEBUG] [API:timing] dispatching to firstParty model=claude-haiku-4-5-20251001

Steps to Reproduce

  1. In a scratch project, create .claude/skills/model-probe/SKILL.md:

```markdown
---
name: model-probe
description: Use when the user asks to run the model probe.
model: haiku
effort: low
---

Reply with exactly the word PROBE-OK and nothing else. Do not call any tools.
```

  1. claude --model sonnet --permission-mode default
  2. Type /model-probe → both assistant messages in the session transcript have "model": "claude-haiku-4-5-20251001"; the TUI shows "thinking with low effort".
  3. New session, prompt Run the model probe using the Skill tool. → Claude calls the Skill tool; all assistant messages are claude-sonnet-5-5; no low-effort indicator, status bar stays effort:med.

Headless gives the same result (3/3 runs): claude -p "Run the model probe using the Skill tool." --model sonnet --permission-mode default --allowedTools Skill --output-format stream-json --verbose → modelUsage contains only claude-sonnet-5-5; claude -p "/model-probe" ... → only claude-haiku-4-5-20251001.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.287 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

  • In auto mode, both paths log Skill/command model "claude-haiku-4-5-20251001" is not supported in auto mode; keeping the session model. That is documented behaviour and not part of this report.
  • Related: #79664, #79661, #79654 (same bug, closed), #84262 (open, broader claim), #69267 (effort: no runtime effect).

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗