[Bug] Opus 4.8: ignores loaded skill contract, misreports failed tool calls as successes, ignores direct user questions — same session recovers immediately on Opus 4.7
Bug Description
In a single Claude Code session, claude-opus-4-8 exhibited a cluster of severe behavioral failures. Switching the same session to claude-opus-4-7 resolved all of them within minutes — same context, same skill, same hooks; the only variable was the model. Evidence below is compiled from the local session transcript (timestamps UTC, 2026-07-05). The user reports this is recurring across sessions with Opus 4.8, not a one-off.
Observed failures (all in one session)
- Loaded skill contract ignored. At 11:07Z the model invoked a workflow skill via the Skill tool (a state-file + PreToolUse/PostToolUse hook workflow; SKILL.md was loaded into context, and the model itself announced it would follow the workflow). It then did the coding task while ignoring the entire contract: no state initialization, no step declarations, no required artifacts — and committed directly to
mainat 11:12Z, bypassing the repository's established PR convention. Because the hooks arm only after the workflow's init command runs, ignoring the contract silently disabled every guardrail.
- Failed tool calls treated as successes / fabricated state. In a follow-up task, tool calls failed but the model proceeded as if they had succeeded, described "changes it had made" that were never applied, and layered explanations on top of the phantom changes. After the model switch, the session itself diagnosed this: the earlier assistant had "misread a broken tool call as success and stacked false explanations on top of it."
- Direct user questions ignored. Between 11:35Z and 11:43Z the user asked "what did you change?" six-plus times, escalating in frustration; the model kept running unrelated investigation commands instead of answering.
- Language flip. At 11:43Z the model replied in English in the middle of an all-Japanese conversation.
- Control comparison. At 11:47Z the user switched the session to
claude-opus-4-7. Within ~2 minutes the same skill + hooks ran correctly (state init, step declarations, phase gates all honored) and stayed correct for the remainder of the session.
Why this matters
Hook/skill-based guardrails in Claude Code assume the model at least attempts to follow a contract it has loaded and announced. A model that silently ignores loaded contracts and misreports failed tool calls as successes defeats guardrails and produces confidently false status reports — the user only discovered the phantom edits by interrogating the session.
Environment Info
- Platform: darwin (macOS 27.0.0)
- Version: 2.1.159 (Claude Code)
- Model: claude-opus-4-8 (failing) vs claude-opus-4-7 (recovered, same session)
Related: #69628 (general Opus 4.8 quality degradation reports — this issue adds concrete, transcript-backed failure modes with an in-session model A/B). Repository specifics are private; happy to provide sanitized transcript excerpts through a feedback channel if useful.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗