Skip to content

chernistry/bernstein

v3.2.0 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

agent-orchestrator agentic-ai ai-agents aider air-gap audit-trail
+14 more
claude-code cli-tool codex-cli coding-agent deterministic-replay deterministic-scheduler hmac-audit mcp-server model-context-protocol multi-agent parallel-worktrees provenance python reproducibility

Affected surfaces

deps

ReleasePort's take

Moderate signal
editorial:auto 11d

Version v3.2.0 introduces resilient resumption of interrupted runs via a Merkle‑chained ledger and deterministic rerouting for provider outages with receipted decisions.

Why it matters: Patches CVE-2026-8643 by bumping the pip lockfile; adopt v3.2.0 to eliminate this high‑severity vulnerability (severity 90).

Summary

AI summary

Runs resume from a verified ledger and provider outages reroute along declared fallback chains with receipts.

Changes in this release

Security Critical

Dependency update bumps pip lockfile past CVE-2026-8643, patching the vulnerability.

Dependency update bumps pip lockfile past CVE-2026-8643, patching the vulnerability.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Interrupted runs resume from a Merkle-chained work ledger without re‑executing completed tasks.

Interrupted runs resume from a Merkle-chained work ledger without re‑executing completed tasks.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Failed task retries can warm‑resume from recorded checkpoints, preserving in‑context progress.

Failed task retries can warm‑resume from recorded checkpoints, preserving in‑context progress.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Provider outages trigger deterministic rerouting along declared fallback chains with receipted decisions.

Provider outages trigger deterministic rerouting along declared fallback chains with receipted decisions.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Local OpenAI‑compatible endpoints can serve worker roles after passing a certification gate with signed receipts.

Local OpenAI‑compatible endpoints can serve worker roles after passing a certification gate with signed receipts.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Cross‑adapter coordination uses HMAC‑chained, Ed25519‑signed task mailboxes with claim receipts in the audit chain.

Cross‑adapter coordination uses HMAC‑chained, Ed25519‑signed task mailboxes with claim receipts in the audit chain.

Source: llm_adapter@2026-07-15

Confidence: high

Bugfix Low

Resolved all open scanner alerts by applying idiom cleanups and adding containment checks for derived filenames.

Resolved all open scanner alerts by applying idiom cleanups and adding containment checks for derived filenames.

Source: llm_adapter@2026-07-15

Confidence: high

Full changelog

v3.2.0

Released 2026-07-10.

A resumability and availability release. Interrupted runs continue from a
verified ledger instead of starting over, provider outages reroute along
declared fallback chains with a receipt for every decision, and certified
local endpoints join the worker pool behind a certification gate.

Durable work ledger (#2358)

An interrupted orchestration run no longer discards finished work. The
scheduler records every task transition in a Merkle-chained work ledger:

  • Every state transition of the task graph appends a redacted,
    content-addressed ledger entry whose hash links its predecessor, using the
    same canonical-JSON contract as the per-step replay journal.
  • bernstein ledger resume rebuilds scheduler state purely by replaying the
    chain and re-dispatches only tasks without a completion entry. Completed
    work is never re-run.
  • The ledger is machine-portable: clone the repository on another machine and
    resume there with zero lost completed work. Tampering or divergence
    surfaces as a hash mismatch at an exact position, never as a silent merge.
  • bernstein resume <task-id> picks up a single paused, killed, or crashed
    task from its last checkpoint and points at the ledger when the id matches
    a portable run.

Checkpointed retries (#2359)

A failed task retry no longer has to start cold. When the native agent
session recorded a checkpoint, the retry engine resumes it warm:

  • Warm resume replays the recorded session checkpoint with a templated
    corrective instruction, so in-context progress is preserved.
  • Fork branches a fresh session off the checkpoint and leaves the original
    session intact. Cold restart stays the always-safe fallback.
  • Every decision (warm, fork, or the downgrade reason that forced cold) is
    anchored in the journal and mirrored to the audit chain, so a retry replays
    identically and the decision trail survives the worktree.

Provider availability policy (#2355)

Provider outages reroute instead of failing the spawn. Roles declare a
fallback chain, and failover is a deterministic, receipted decision:

  • Per-role fallback chains list providers in preference order; health probes
    are cached with an explicit TTL so dispatch bursts do not re-probe.
  • Chain resolution is deterministic: the same policy and probe results always
    produce the same decision hash, and every failover lands a journal receipt
    mirrored to the audit chain.
  • bernstein doctor --failover-drill exercises every declared chain against
    simulated outages and reports the route each role would take, before a real
    outage forces the question.

Local-model worker tier (#2356)

OpenAI-compatible local endpoints can now serve worker roles behind a
certification gate:

  • bernstein doctor --endpoint runs the conformance suite against an
    endpoint and produces a signed certification receipt; certified endpoint
    profiles are the only ones the config gate accepts for role assignments.
  • Certification receipts are anchored to the audit chain, so an assignment
    can always be traced back to the exact probe run that admitted the
    endpoint.
  • Three verified local configurations are documented in the local-endpoints
    reference, each reproduced from its certification receipt.

Cross-adapter coordination (#2357)

Workers on different adapters now coordinate through a signed task mailbox
instead of ad-hoc files:

  • Every mailbox message is HMAC-chained and Ed25519-signed; the response to a
    post is the signed journal entry itself.
  • The claim API is dependency-gated: a task cannot be claimed until the tasks
    it depends on have verified completions, and every claim emits a claim
    receipt into the audit chain.
  • Delivery is replay-identical: replaying the same journal reproduces the
    same message order and the same claim outcomes, byte for byte.

Housekeeping

  • Resolved all open scanner alerts in the new feature code: applied the
    suggested idiom cleanups, restricted the endpoint conformance transport to
    http/https handlers only, and added containment checks for filenames
    derived from session and approval ids.
  • Dependency updates, including a pip lockfile bump past CVE-2026-8643.

Security Fixes

  • Dependency updates bump pip lockfile past CVE-2026-8643.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track chernistry/bernstein

Get notified when new releases ship.

Sign up free

About chernistry/bernstein

Deterministic multi-agent orchestrator for 18 CLI coding agents (Claude Code, Codex, Cursor, Aider, Gemini CLI, OpenAI Agents SDK, and more). MCP server mode (stdio + HTTP/SSE) exposes the orchestrator to any MCP client. Git worktree isolation per agent, HMAC-chained audit trail, cost-aware model routing via contextual bandit. ~11K monthly PyPI downloads, Apache 2.0.

All releases →

Related context

Related CVEs

Earlier breaking changes

  • v3.7.1 `bernstein approve` and `bernstein reject` now enforce identifier regex `[A-Za-z0-9._-]{1,64}`.
  • v3.7.1 Tampered mission ledger reports as unverified rather than not-found.
  • v3.7.1 `mission define` now refuses phases without gate tasks.
  • v3.5.0 MCP client, transport, and gateway become stateless; calls carry content‑derived trace IDs in _meta.

Beta — feedback welcome: [email protected]