This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
+14 more
Affected surfaces
ReleasePort's take
Moderate signalThe release hardens SSH secret handling by storing only vault provider IDs and prevents directory traversal in run journal path computation.
Why it matters: Security improvements: SSH secrets now store only vault IDs (never credential values) and run journal paths are hardened against traversal outside the runs root. Address these changes before deploying new services or updating existing ones.
Summary
AI summaryUpdates Security hardening, Windows parity coverage, and Static-analysis cleanup across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
SSH secret handling now stores only vault provider IDs, never credential values. SSH secret handling now stores only vault provider IDs, never credential values. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Security | High |
Run journal path hardening prevents directory traversal outside the runs root. Run journal path hardening prevents directory traversal outside the runs root. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Added self‑promoting lane gate, mocked stop/restart with worktree isolation on Windows. Added self‑promoting lane gate, mocked stop/restart with worktree isolation on Windows. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Low |
Reduced skipped Windows test cases, improving parity coverage. Reduced skipped Windows test cases, improving parity coverage. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Refactor | Low |
Removed redundant idioms in skills conformance command and reworded detached‑run log line. Removed redundant idioms in skills conformance command and reworded detached‑run log line. Source: llm_adapter@2026-07-15 Confidence: high |
— |
Full changelog
v3.4.1
Released 2026-07-12.
A patch release on top of v3.4.0. It completes the follow-up work that landed
after the v3.4.0 tag: Windows parity coverage and a security hardening and
static-analysis cleanup pass. There are no breaking changes and no
configuration migration is required.
Security hardening
- ssh secret handling for the detached run service now keeps only vault
provider ids in its backend descriptor. The connection sidecar that a
supervisor rebuilds on restart names which vault provider supplies which
remote environment variable and never carries a secret value. Resolved
credentials continue to flow through the vault path into the remote process
environment only, and are never written to the sidecar, the work ledger, the
receipts, or the logs. The failure log now records the provider id and the
exception type, never the credential payload. - Run journal path hardening. The per-run event journal derives its on-disk
path only from a run id that has passed an anchored allowlist, an explicit
rejection of the current and parent directory, and a realpath containment
check against the runs root. A run id can no longer steer the journal file
outside the runs directory.
Static-analysis cleanup
- Removed redundant idioms in the skills conformance command and reworded a
detached-run log line, clearing the corresponding scanner findings.
Windows parity coverage
- Self-promoting lane gate, mocked stop and restart with worktree isolation,
and a reduction in skipped Windows cases, closing gaps ahead of first-class
Windows support (#2448).
Upgrading
pipx upgrade bernstein # or: uv tool upgrade bernstein
No configuration migration is required. Every capability available in v3.4.0
is unchanged.
Security Fixes
- SSH secret handling for the detached run service now stores only vault provider IDs; connection sidecar no longer carries secret values, reducing credential exposure.
- Run journal path hardening prevents run IDs from escaping the runs directory via realpath containment checks and explicit parent/current directory rejection.
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
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.
Related context
Related tools
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]