{
  "id": 16433149,
  "title": "Claude Code Automation: Publish Gates Blocked 23 Bad Posts in 10 Days",
  "url": "https://urgent.news/2026/10/25/claude-code-automation-publish-gates-blocked-23-bad-posts-in-10-days",
  "topic": "ai",
  "section": "AI",
  "published": "2026-10-25T05:00:58.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/sungwoo_lee_e0f26be4a29fd/claude-code-automation-publish-gates-blocked-23-bad-posts-in-10-days-5fh3"
  },
  "original_language": "en",
  "account": "Claude Code, a publishing tool, blocked 23 posts in 10 days by using a gate that checks the output. The gate runs and writes a JSON ledger for every run, tracking passed, blocked, and defective runs. The gate blocked posts due to issues like missing images, failed charts, incorrect relative dates, and keyword problems. Gates work better than prompts because they provide a concrete machine-readable reason for failure. The setup involves writing a checker with three exit codes (0 for clean, 1 for defect, and 2 for checker failure), appending a JSON line per run with timestamp, target, exit code, and defect names, and having the publish step call the gate and stop on exit 1. The ledger is written immediately after the irreversible action, not at the end of the batch, and failure cases are logged as symptom, cause, and fix.",
  "summary": "If Claude Code runs anything that publishes, posts, or deletes for you, don't rely on a prompt that says \"be careful.\" Put a small script between the model and the irreversible step, and make that script read the actual output. In 10 days (2026-09-28 to 2026-10-07) one such gate ran 248 times on my Claude Code-run blog pipeline and blocked 37 of those runs. That stopped 23 different posts before…",
  "key_points": [
    "Claude Code blocked 23 posts in 10 days using a gate.",
    "Gate checks output, writes JSON ledger for each run.",
    "Gate blocked posts due to missing images, failed charts, and keyword issues."
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}