• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lsm / neokai / 25648398043
82%

Build:
DEFAULT BRANCH: dev
Ran 11 May 2026 03:16AM UTC
Jobs 0
Files 0
Run time –
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Canceled at 12 May 2026 04:03AM UTC via web
25648398043

push

github

web-flow
feat(daemon): detect Bash dead loops via PostToolUse failure tracking (#1854)

* feat(daemon): detect Bash dead loops via PostToolUse failure tracking

Extends the loop-detector hook to catch the Bash variant of the dead-loop
failure mode (task #333). Bash output legitimately changes across calls
(polling `git status`, retrying `bun test` after a fix), so denying purely
on repetition would produce false positives. Instead, a paired PostToolUse
hook records each Bash outcome into a per-fingerprint failure ring; the
PreToolUse hook denies only when the same command has run N times in a row
AND the last N outcomes were all failures. PostToolUseFailure events
(true SDK errors) are also counted as failures. A single successful run
purges the deny condition.

Defaults: threshold=5, failuresRequired=5 inside the existing 60s window.
The shared-state factory createLoopDetectorHooks() returns matched
pre/post callbacks so production wiring stays a single call site. The
legacy createLoopDetectorHook() factory is preserved for tests that only
exercise the pre-hook.

* fix(daemon): address Bash loop detector review feedback

- Strip non-semantic `description` field from Bash fingerprint so retries
  with reworded labels still collapse to the same key (otherwise the
  model rewording "Check git hooks" → "List hook files" between attempts
  defeats the detector outright).
- Remove substring-scanning of stdout/text for "command not found",
  "permission denied", "Exit code: N", etc. Commands legitimately emit
  those phrases (grepping logs, tutorials, test runner output), so
  using them as failure signals creates false positives that block
  legitimate retries. Only top-level `is_error`/`interrupted`/non-zero
  exit-code fields and non-empty `<bash-stderr>` blocks (delimiters the
  SDK controls, not content commands can fabricate) count as failures.
- Add time-based eviction for the `bashFailures` map: opportunistically
  drop ring buffers whose `lastSeenMs` is pas... (continued)
Source Files on build 25648398043
Detailed source file information is not available for this build.
  • Back to Repo
  • Github Actions Build #25648398043
  • 4113465e on github
  • Prev Build on dev (#25648129480)
  • Next Build on dev (#25671263236)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc