github Ruya-AI/cozempic v1.8.27
v1.8.27 — guard survives a slow first user turn (#121)

latest releases: v1.8.39, v1.8.38, v1.8.37...
5 months ago

cozempic v1.8.27 — the guard survives a slow first user turn (#121) + #120

#121 (regression of #73, reported & RCA'd by @AndrewChemis)

Claude Code writes the session JSONL lazily, on the first user turn — user-paced, routinely far beyond the guard's 15s session-resolve budget (the reporter measured 109s). When the budget expired the daemon exited and nothing respawned it, so the guard and the prune nudge were silently dead for the whole session.

Now, for an explicit (SessionStart-provided) session, the daemon waits patiently for the JSONL to appear — polling with backoff past the initial window, bounded by Claude's liveness when known and a generous COZEMPIC_SESSION_WAIT_SECONDS budget (default 900s). It keeps its spawn claim while waiting (no double-spawn; doctor still sees it) and logs the wait instead of dying silently. Auto-detect (no --session) is unchanged.

Hardening (from a 26-agent adversarial QA pass)

  • The destructive guard now prefers an exact session-id match over a prefix match, so a prefix collision can't attach it to the wrong session.
  • A pathological --session (ENAMETOOLONG) or a malformed/huge --claude-pid can no longer crash the daemon.
  • The startup give-up path uses the CAS pidfile unlink (won't clobber a peer's claim) and logs the give-up.

#120 — Homebrew MCP server

The Homebrew formula now depends_on "uv", so the MCP server (launched via uv run) works out of the box for brew installs (thanks @ssobolev).

Full suite: 1291 passed.

brew upgrade cozempic   # or: uv tool upgrade cozempic / pip install -U cozempic / npm i -g cozempic

Don't miss a new cozempic release

NewReleases is sending notifications on new releases.