Subscribe

Know when Claude Code breaks — before you upgrade

Anthropic ships several releases a week. We track every issue filed against anthropics/claude-code and attribute it to the version the reporter was running. Subscribe and the release, its changelog, and the bug reports that followed it land in one place.

88,052 issues indexed · 14,793 still open · updated daily

  1. 1Pick a feedChoose by the question you want answered, below.
  2. 2Click your readerFeedly, Inoreader, NewsBlur — or copy the URL into any app.
  3. 3DoneNo account here, no signup, nothing to unsubscribe from.

Pick your feed

Four feeds, all free and open. Most people want the first one.

When did Anthropic ship a version, and is it safe to upgrade?

Start here

Releases & upgrade risk · new item a few per week

One item per release: publish date, changelog preview, and how many issue reports have been attributed to that version so far. Titles flag releases drawing elevated report volume.

add to FeedlyInoreaderNewsBlur
https://claudeissues.com/rss/releases.xmlview raw

What just broke for other people?

New issues, daily · new item daily

One item per completed day listing every newly filed issue. The firehose — useful if you want to spot your own error message before you spend an hour on it.

add to FeedlyInoreaderNewsBlur
https://claudeissues.com/rss/daily-new.xmlview raw

Did the bug I hit get fixed yet?

Resolved issues, daily · new item daily

Everything closed each day with the close reason, so you can tell a real fix from a stale-bot closure.

add to FeedlyInoreaderNewsBlur
https://claudeissues.com/rss/daily-closed.xmlview raw

Give me the summary, not the firehose.

Weekly review · new item weekly

One item per completed week: new and resolved counts, net backlog change, and the most discussed threads. Pick this one if four feeds sounds like too much.

add to FeedlyInoreaderNewsBlur
https://claudeissues.com/rss/weekly.xmlview raw

What an item looks like

This is a real entry from the releases feed. The report count is the part you care about: it tells you how much pain a version is causing before you install it.

v2.1.251 released Fri, 28 Aug 2026

v2.1.251 was published on August 28, 2026.

Issue reports attributed to this version so far: 123 (119 open, 4 resolved).

## What's changed

- Bug fixes and reliability improvements
Links through to /version/v2.1.251 — every report filed against that build, grouped by error type.

Prefer email?

Coming soon

Weekly newsletter

A short digest in your inbox: what shipped, what broke, and whether the newest build is worth installing. Not built yet — the RSS feeds above carry the same data today, and any reader will email them to you in the meantime.

Weekly review feed

Wire it into something

Working examples, not pseudocode. Each one answers the same question — is a recent release causing trouble — from a different place.

Is the release I am about to install drawing an unusual number of reports? One command, no dependencies.

curl -s https://claudeissues.com/signals.json \
  | jq -r '.releaseImpact[]
      | select(.partial == false and .ratio > 1.3)
      | "\(.tag)  \(.after) reports in 7d  (baseline \(.baseline))"'

Post to Slack when a release shows elevated report volume. Drop it in cron; it only speaks up when there is something to say.

#!/usr/bin/env bash
set -euo pipefail
HOOK="$SLACK_WEBHOOK_URL"

msg=$(curl -s https://claudeissues.com/signals.json | jq -r '
  .releaseImpact[]
  | select(.partial == false and .ratio > 1.3)
  | ":rotating_light: *\(.tag)* drew \(.after) reports in the 7 days after release "
    + "(baseline \(.baseline)) — <https://claudeissues.com/version/\(.tag)|see them>"' | head -3)

[ -z "$msg" ] && exit 0
curl -s -X POST "$HOOK" -H 'Content-Type: application/json' \
  -d "$(jq -n --arg t "$msg" '{text: $t}')"

Read the release feed and pull out the report count each item carries. Works with any RSS parser; this one avoids the dependency.

const res = await fetch('https://claudeissues.com/rss/releases.xml');
const xml = await res.text();

const items = [...xml.matchAll(/<item>([\s\S]*?)<\/item>/g)].map(([, block]) => {
  const pick = (tag) => block.match(new RegExp(`<${tag}>([\\s\\S]*?)<\\/${tag}>`))?.[1] ?? '';
  const desc = pick('description');
  return {
    title: pick('title'),
    link: pick('link'),
    published: new Date(pick('pubDate')),
    // Descriptions are HTML-escaped; the count sits in "attributed ...: <strong>N</strong>".
    reports: Number(desc.match(/attributed to this version so far: [^0-9]*([0-9,]+)/)?.[1]?.replace(/,/g, '') ?? 0),
  };
});

console.log(items.slice(0, 5));

Prefer the JSON endpoints over parsing RSS when you are feeding a dashboard — same data, already numeric.

import urllib.request, json

with urllib.request.urlopen("https://claudeissues.com/signals.json") as r:
    sig = json.load(r)

# Bail out if our refresh job is behind — stale data looks like a quiet week.
if sig["freshness"]["staleDays"] > 2:
    raise SystemExit(f"data is {sig['freshness']['staleDays']} days stale, not alerting")

for rel in sig["releaseImpact"]:
    if rel["partial"]:          # window still elapsing — never alert on these
        continue
    if rel["ratio"] > 1.3:
        print(f"{rel['tag']}: {rel['after']} reports in 7d, baseline {rel['baseline']}")

for day in sig["anomalies"]:
    print(f"spike {day['date']}: {day['created']} filed, {day['z']}σ above baseline")

Gate your own upgrade PRs on it. Fails the job when the version you are pinning to is drawing elevated reports.

name: Check Claude Code release health
on:
  schedule: [{ cron: '0 9 * * *' }]
  workflow_dispatch:

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - name: Flag releases drawing elevated report volume
        run: |
          curl -s https://claudeissues.com/signals.json > signals.json
          stale=$(jq -r '.freshness.staleDays' signals.json)
          if [ "$stale" -gt 2 ]; then echo "upstream data stale ($stale d), skipping"; exit 0; fi
          jq -e '[.releaseImpact[] | select(.partial == false and .ratio > 1.3)] | length == 0' \
            signals.json > /dev/null || {
              echo "::warning::a recent release is drawing elevated issue volume"
              jq -r '.releaseImpact[] | select(.partial == false and .ratio > 1.3)
                     | "\(.tag): \(.after) reports in 7d (baseline \(.baseline))"' signals.json
            }

Fetch these server-side. They are static files behind nginx and send no CORS header, so a browser fetch from another origin will be blocked.

JSON endpoints

RSS items are prose meant for reading. For a dashboard or an alerting service, use these — no HTML parsing, no regex over descriptions.

Three things to respect in signals.json. It is built from release publish timestamps and issue timestamps, so an elevated ratio means more issues were filed after a release than before it — temporal correlation, not proof the release caused them. And entries still inside their 7-day window carry partial: true; alerting on those produces false positives. Check freshness.staleDays too: gaps are zero-filled, so a failed refresh on our side looks exactly like a quiet week.

Building an agent?

/agent.md is the machine-facing entry point: endpoint contracts, field semantics, decision recipes, and a ready-to-paste Claude Code skill. /llms.txt maps the rest of the site.

Read /agent.md