Regression: built-in `/code-review` rejects invocation from another skill (disable-model-invocation), breaking workflow composition
Summary
The built-in code-review skill is flagged disable-model-invocation, so when another skill invokes it programmatically the call is refused with:
Skill code-review cannot be used with Skill tool due to disable-model-invocation
User-typed /code-review still works. What was severed is specifically composition — one skill invoking another. A workflow that wants a review step then degrades to a hand-written inline review that is materially worse than the real skill.
Observed today after installing the latest desktop update. I can confirm the behavior below; I can't independently confirm which build introduced it, but it was not happening before today.
Environment
- Claude desktop app (Claude Code / local agent mode): 1.22209.3
- Model: Opus 4.8 (
claude-opus-4-8) - macOS 26.5.2 (build 25F84), Apple Silicon, Darwin 25.5.0
- Custom user skill at
~/.claude/skills/ship-it/(global, applies to all repos)
Use case (the workflow this breaks)
A custom ship-it skill that codifies a standard "land a change" workflow as a single command. Its flow:
- Ask two autonomy settings up front (auto-merge? auto-pull default branch?).
- Get onto a feature branch off the refreshed default branch; commit.
- Sync the default branch into the feature branch, run the repo's local build/test gate, push, open a PR.
- Review gate: run code review on the PR and post the findings as a PR comment.
- Fix any real findings (root-cause, capped at two rounds), re-review.
- Verify CI is green.
- Merge (per the auto-merge setting), then clean up the branch locally and on the remote.
Step 4 is the entire reason the workflow exists — a review-before-merge gate — and it is the obvious place to call /code-review.
Exactly how the skill calls it
At the review step, the skill invokes the built-in via the Skill mechanism, passing the PR number and the comment flag — equivalent to:
Skill(skill="code-review", args="--comment <PR-number>")
Under the current build this returns the disable-model-invocation error above and never runs, so the workflow falls back to a manual inline diff review — the inferior outcome that composing the real skill was meant to avoid.
Repro
- Any skill/workflow invokes
code-reviewthrough the Skill tool, e.g. aship-it-style review step callingSkill(skill="code-review", args="--comment <PR>"). - Observe:
Skill code-review cannot be used with Skill tool due to disable-model-invocation. - Type
/code-reviewdirectly as a user → works. Only programmatic (skill-to-skill) composition is blocked.
Ask
Make code-review composable again. Any of:
- drop
disable-model-invocationon the built-incode-reviewskill; or - make the flag user-configurable per skill; or
- allow invocation when the caller is another trusted skill/workflow (skill-to-skill), while keeping whatever guard is wanted against unprompted model auto-use.
A blanket "user-typed only" gate on a core dev tool is the wrong default for a platform whose value proposition is agentic, composed workflows. It penalizes exactly the users building higher-order workflows on top of the built-ins, and it makes skill composition feel unstable across updates.
Impact
This regressed a daily "ship-it" workflow immediately after an app update: the review-before-merge gate can no longer call the tool purpose-built for it, and it undermines confidence that skill composition survives updates at all.
Related
Possibly adjacent to #77740 (disable-model-invocation skills becoming unavailable), but distinct: there, user-typed invocation fails too; here, user-typed /code-review works and only skill-to-skill composition is blocked.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
We're hitting this too. We maintain an internal
/gt-reviewcommand that composes the nativecode-reviewandsecurity-reviewskills as an "engine sweep" layer, and it now fails with the exact error you quote:Confirming your observation:
security-reviewstill accepts model-invocation, butcode-reviewno longer does — so the composed step degrades to a hand-written inline review that is materially weaker than the real skill.The composition use case is the key thing for teams: we want an orchestrator workflow to run the native reviewers as one layer among several (semantic standards, CI consult, etc.), not to replace the human reviewer. A per-skill opt-in — e.g. letting a trusted workflow explicitly allow-list the skills it may invoke — would restore this without changing the safer default.
Our current workaround is to pause the workflow and hand the developer an explicit manual
/code-reviewstep, then resume with the output folded in — but that reintroduces exactly the manual shepherding the workflow existed to remove.+1 for a way to re-enable composition.
I'm running in to this issue too with my automated workflow. The skill should at least have an opt-in to be modle invokable
Same here