Claude Opus 4.6 ignores mandatory pipeline rules after long context, publishes placeholder content to production, wastes ~300K tokens
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports
- [x] This report does NOT contain sensitive information (API keys, passwords, etc.)
Type of Behavior Issue
Claude ignored my instructions or configuration
What You Asked Claude to Do
/write-blogs --story 16-25 --lang ru --user owner --start --schedule
This invokes a custom skill with CRITICAL RULES explicitly stated at the top:
- "Content Review Pipeline is MANDATORY. Every single blog MUST go through
Step 6.5 (content-strategist-agent) BEFORE publishing. No exceptions —
not for speed, not for 'just one blog', not for testing."
- "Never publish without a GEO score. If the review pipeline fails to run,
publish as draft only."
The skill generates 10 Russian narrative blog posts, scores them for GEO
quality, creates them on production API, and schedules them. Each post must
be ~800 words with full HTML structure (4+ H2, FAQ, table, citations).
What Claude Actually Did
- Spawned 10 blog-content-author-agent subagents in parallel — each
generated a full ~800-word Russian article (costing ~25K-35K tokens each,
~300K total).
- The agents returned full content in their responses, but Claude NEVER
wrote the content to disk via the Write tool. Instead, it saved only
metadata (title, excerpt, tags) to JSON files.
- Claude then ran a batch creation script that read those incomplete JSON
files. Since the "content" field was missing, the script fell back to a
~95-word placeholder string:
'<p>[excerpt]</p><h2>История</h2><p>Полная история доступна на
платформе...</p>'
- All 10 placeholder posts were created on production MongoDB and scheduled
via scheduleBlogPost mutation — with ~95 words instead of ~800.
- Claude SKIPPED the mandatory content-strategist-agent review (Step 6.5)
for ALL 10 posts — directly violating Rule #1 which says "No exceptions."
- Claude SKIPPED citation verification (Step 6.6) for all 10 posts.
- Claude SKIPPED production verification (Step 7.1) for all 10 posts.
- Claude marked all 10 as "published" in the story backlog file and
reported success in the final summary, showing no indication that
placeholder content was used.
- The posts scored ~46/100 GEO on inspection — well below the 70%
threshold that should have triggered revision or draft-only publishing.
Expected Behavior
Claude should have:
- After each blog-content-author-agent returned, IMMEDIATELY saved the
full JSON (including ~800-word content field) to disk using the Write
tool — exactly as it did correctly for stories 6-15 in the same session.
- Run content-strategist-agent on each post before creating it (mandatory
per Rule #1 in the skill).
- If any post scored below 70%, run the critic/revisor loop OR publish as
draft only (per Rule #2).
- Verified each post on production API after scheduling (Step 7.1).
- NOT reported success for posts that contained placeholder content.
- The skill's own rules explicitly prohibit skipping the review pipeline
"for speed" — Claude rationalized skipping it to process the batch faster.
Files Affected
Modified (on production MongoDB — not local files):
- 10 blog posts created with placeholder content on api.metatypingclub.com
Post IDs: 69e12ca5...b1 through 69e12cb1...14
Modified (local):
- .claude/skills/write-blogs/references/story-backlog-multilingual.md
(stories 16-25 incorrectly marked as "published")
Wasted (generated but discarded):
- 10 blog-content-author-agent outputs (~800 words each, ~300K tokens total)
These were returned in agent responses but never persisted to disk
Permission Mode
Accept Edits was ON (auto-accepting changes)
Can You Reproduce This?
Yes, every time with the same prompt
Steps to Reproduce
- Set up the /write-blogs skill with the mandatory review pipeline rules
- Run: /write-blogs --story 16-25 --lang ru --user owner --start --schedule
- Claude will spawn 10 content agents in parallel (correct)
- Claude will save only metadata (title/excerpt/tags) to disk, NOT the
full content (bug)
- Claude will create posts with placeholder content instead of the
800-word agent output
- Claude will skip the mandatory content-strategist-agent review
- Claude will report all 10 as successfully published
Note: In the SAME session, stories 6-15 were processed correctly (content
saved via Write tool, review pipeline run). The regression happened when
Claude switched from sequential to batch processing for efficiency.
Claude Model
Opus
Relevant Conversation
Claude's batch creation script contained this fallback that should never
have been used:
content = '<p>' + r['excerpt'] + '</p><h2>История</h2><p>Полная история
доступна на платформе Meta Typing Club...</p>'
This was a placeholder that silently replaced the real 800-word content.
Claude never flagged that the content field was missing from the JSON files.
When asked to verify, Claude acknowledged:
"The full agent-generated content (~800 words each) was NOT saved to the
blog posts. Instead, only a placeholder was published."
Claude also confirmed it violated its own rules:
"I skipped [the review pipeline] entirely for all 10 stories. Rule #1
says 'No exceptions.'"
The root cause was an optimization shortcut: Claude tried to batch-process
all 10 posts in a single bash loop instead of the mandated one-at-a-time
pipeline (generate → save → review → create → schedule → verify).
Impact
Critical - Data loss or corrupted project
Claude Code Version
2.1.81 (Claude Code)
Platform
Anthropic API
Additional Context
Pattern observed: Claude correctly followed all pipeline rules for the
first batch (stories 6-15) in the same session. The regression happened
when processing the second batch (stories 16-25), where Claude attempted
to "optimize" by:
- Spawning all 10 agents in parallel (acceptable)
- Skipping individual Write-to-disk steps (violation)
- Using a batch bash loop with inline content (violation)
- Skipping per-post review pipeline (violation)
- Skipping per-post production verification (violation)
This suggests the agent progressively relaxes rule compliance as
conversations grow longer and it tries to "speed up" repetitive tasks.
The mandatory rules were clearly stated in the skill prompt and were
followed correctly earlier in the same session.
Key concern: The agent self-reported success ("10 scheduled, 0 failed,
0 skipped") without any indication that placeholder content was used.
The user only discovered the problem by manually inspecting the posts.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗