Skill tool aborts with "Sibling tool call errored" when a parallel tool call fails
Summary
When the Skill tool is invoked in parallel with other tool calls (i.e. as a sibling in the same response turn), and one of those other sibling tool calls fails, the Skill invocation is aborted with the error message \"Sibling tool call errored\" — even though the skill itself and the error are completely unrelated.
Retrying the skill invocation in isolation (no other parallel tool calls) succeeds immediately.
Steps to Reproduce
- Configure a
CLAUDE.mdinstruction that automatically triggers a skill load at the start of a task (e.g. \"When working with Swift or SwiftUI, always loadswiftui-expert:swiftui-expert-skill\"). - Send a message that triggers both the skill load and other tool calls in the same response turn (e.g. a file read, glob, or bash command that fails or times out).
- Observe that the
Skilltool invocation reportsError: Sibling tool call erroredand the skill content is not injected into the context.
Observed Behaviour
⏺ Skill(swiftui-expert:swiftui-expert-skill)
⎿ Initializing…
⎿ Error: Sibling tool call errored
The skill does not load. Its context/content is not available for the rest of the turn.
Expected Behaviour
A failing sibling tool call should not abort unrelated parallel tool calls. The Skill invocation should either:
- Complete independently of sibling failures, or
- Surface its own error (if it genuinely failed), not a cascaded one from an unrelated call.
Additional Context
- The skill (
swiftui-expert:swiftui-expert-skill) is correctly installed and functional — retrying it alone succeeds every time. - The skill's
SKILL.mdis a static text document with no network calls or file reads, so it cannot itself be the source of failure. - The error appears to be a cascade: one sibling tool call fails → the failure propagates to and aborts other in-flight sibling tool calls, including the
Skillinvocation. - This is confusing because the error message on the
Skilloutput gives no indication that the root cause is elsewhere.
Workaround
Invoke the skill in a standalone message before starting the task (no other tool calls in the same turn). This prevents any siblings from failing and taking the skill load down with them.
Environment
- Platform: macOS (darwin 25.3.0)
- Shell: zsh
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗