v2.8.2¶
Released 2026-06-27.
A reliability and maintenance release. The Codex adapter works with a ChatGPT OAuth login again, the worktree garbage collector no longer loses unmerged work or wedges itself after a crash, a new worktrees unlock command recovers a stuck GC lock, and the open code-scanning and Dependabot security surface is cleared. This release also folds in a large batch of dependency updates and makes the release publish step re-runnable.
Features¶
bernstein worktrees unlockinspects and recovers a stuck GC lock.worktrees gcholds an exclusive lock for the duration of a sweep; a crashed or killed run could leave it behind. The new command reports who holds the lock (pid, liveness, age), clears it when the owner process is gone, and refuses a lock held by a live, recent process unless--forceis passed. The unlock is recorded as a tamper-evidentworktree.gc_unlockevent in the HMAC-chained audit log, so an operator recovery is reconstructable rather than a silent file deletion. (#2094)
Fixes¶
- Codex with a ChatGPT subscription is usable again. A run pinned to
--cli codexno longer hands a Claude tier name tocodex exec -m; the adapter detects a Codex OAuth session in~/.codex/auth.jsonand only warns when neither an API key nor an OAuth session is present; andbernstein demo --realno longer crashes on its closing summary. (#2086) - Worktree GC no longer loses unmerged agent work on a repository whose default branch is not
main. The graveyard pre-check resolved against a hardcodedmain; it now resolves the repo default branch and preserves the branch to the graveyard on an inconclusive check instead of dropping it. (#2093) - A worktree GC lock left behind by a crashed run no longer wedges every later
bernstein worktrees gc; a run reclaims a lock once when the owner is gone or it is older than a generous bound. (#2093)
Security and dependencies¶
- Cleared the open code-scanning and Dependabot findings, trimmed CI token permissions to least privilege, and bumped the flagged dependencies (cryptography, starlette, aiohttp, pypdf, pydantic-settings, pyjwt, python-multipart, js-yaml,
@babel/core). (#2087, #2083) - A batch of routine dependency and CI-action updates: the web UI toolchain (react, tailwindcss, radix-ui, @tanstack/react-query, autoprefixer, @types/node), the VS Code extension toolchain (
@vscode/vsce, @types/vscode), and CI actions (trufflehog, zizmor, setup-uv, attest-build-provenance, uv, oss-fuzz base image).
Release infrastructure¶
- The publish workflow can now be re-run manually with
workflow_dispatchagainst a release tag. A tag pushed by auto-release withGITHUB_TOKENdoes not always start the publish workflow; this adds a recoverable manual path so a tagged release can always be completed. Tag-push behaviour is unchanged. (#2107)
Quality¶
- Resolved the open refurb idiom findings across 15 modules (behavior-preserving cleanups). (#2087)