Skip to content

v0.21.0

@fnnzzz fnnzzz tagged this 23 Jul 08:52
Previously `external-agents audit` only touched entries with a
generate_new HTTP transport (verifyCredential path). CLI-only entries
(codex, claude-*, cursor-agent, opencode, kiro) were silently skipped —
so quota_exhausted / needs_auth situations only surfaced AFTER a real
dispatch failed. Kiro's "Monthly request limit reached" and opencode's
usage-cap conditions were invisible in audit output.

New: auditCliEntry() spawns the edit_exists command headless with a
trivial prompt ("reply exactly OK"), captures stderr+stdout with a 20s
timeout, then classifies via the same regex family runAny uses in the
post-dispatch path (0.20.0):

  exit 0                          → healthy         "verified (Nms) (cli)"
  "monthly limit" / "usage limit" → quota_exhausted
  "not logged in" / "please login" → needs_auth
  other non-zero                   → errored_transient (with last line as hint)

State written via same deep-merge as HTTP audit. UI/pick immediately
reflect reality across BOTH transport classes.

Also: added `quota_exhausted` glyph (⏳) to the audit summary table so
the CLI output distinguishes quota from rate_limit at a glance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Assets 2
Loading