
What happened
A GitHub Actions job calling Claude Code on a schedule returned "You've hit your weekly limit" and exited in about 25 seconds, but all 8 consecutive runs from 9/18 to 9/21 showed green because `|| true` and the pipe's `tee` exit code masked the failure.
Why it matters
The job's runs looked successful on the surface — green in GitHub and finishing in about 25 seconds — so no failure email or alert fired and nobody knew the job had stalled for 2.5 days.
What to watch
Fixing this hinges on not treating "the command exited" as "work got done" — the author's corrections include capturing the real exit code with `set +e` and `pipefail`, and checking output length instead of trusting the exit code alone.
WHO IT HITSEngineers and small teams who run AI coding agents like Claude Code on schedulers such as GitHub Actions are exposed to silent stalls — the job keeps reporting green while producing nothing. Anyone relying on green status alone as proof of work may want to verify that output is actually being generated.
Summaries like this, in your inbox every morning.
The stall ran from the night of 9/18 to the morning of 9/21. The author had already been burned by this pattern: on 9/10 a job returned "Not logged in" and stayed green, and on 9/11 a "session limit" message did the same. The response on 9/11 was to split failures into two types — authentication problems that need a human (red) and usage limits that resolve on their own (kept green). Usage limits were kept green to avoid alert fatigue, and the reason was written to a file that a separate watchdog was supposed to read.
The flaw was structural: the watchdog itself called Claude and ran inside the same weekly quota as the job it was watching, so when the limit hit, the role that was supposed to announce the stop stopped along with it. That watchdog also ran every two hours, 84 times a week, mostly concluding there was nothing waiting. The stop was discovered only by accident, while the author was doing something else and happened to open the history file.
The lesson the author draws is that the watchdog's job was placed on the same dependency as the thing it was meant to monitor. What the fix hinges on is separating the path that reports a stop from the path that stops — notifications now go out via curl without calling Claude, and a Python-only daily aggregation no longer depends on the quota. For anyone running similar scheduled agents, the benefit will depend on whether these paths are truly independent in practice.
Pick your industry and the AI tools you use, and get news related to your work every day.
Free · 30 seconds with Google · unsubscribe anytimeWhat is AIToday? →
Ask AI anything about this article. The AI reads this article, earlier AIToday articles, and Wikipedia, and cites its sources. Q&As are published on this page for other readers too.
ElevenLabs completed a $300 million employee tender at a $22 billion valuation, and co-founder Mati Staniszews…

On October 15, OpenAI announced the Rosalind Academic Plan, giving approved US university labs free access to…

A Qiita article compared automated red-teaming methods for LLM apps — GCG, PAIR, and TAP — using mock implemen…

Liquid AI released d1-ultra on October 15, 2026, an upgraded open-weights decision model that averaged 76.7 ac…

Circlia started a proof-of-concept for TASTE SIGNAL: visitors to Holland Village Cafe FUKUOKA taste cookies an…

In a webinar hosted by French Mathematical Society president Isabelle Gallagher, Fields Medal winner Hugo Dumi…
