Skill tool blocks user-requested invocation when disable-model-invocation is set
Description
When a skill has disable-model-invocation: true in its frontmatter, the Skill tool blocks ALL programmatic invocations — including when the user explicitly asks the model to run the skill (e.g., "I'm gonna have you /wrap-up").
Expected behavior
disable-model-invocation: true should prevent the model from autonomously invoking the skill, but should still allow invocation when the user explicitly requests it (e.g., "run /wrap-up", "do /wrap-up for me", "I'm gonna have you /wrap-up").
Current behavior
The Skill tool returns an error:
Skill wrap-up cannot be used with Skill tool due to disable-model-invocation
The model then has to fall back to reading the skill file with the Read tool and following the instructions manually — which works but defeats the purpose of the Skill tool.
Reproduction
- Create a skill with
disable-model-invocation: truein frontmatter - Ask the model: "please run /skill-name"
- Model attempts Skill tool → gets blocked
- Model has to fall back to Read tool
Suggested fix
Distinguish between model-initiated and user-requested invocations. If the user's message contains an explicit reference to the skill (e.g., "/wrap-up", "run wrap-up"), treat it as user-initiated and allow the Skill tool invocation.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗