Skip to content

v0.22.1

Choose a tag to compare

@github-actions github-actions released this 15 Jul 01:07
· 240 commits to main since this release
Immutable release. Only release title and notes can be modified.

What's Changed

  • fix(session): route hydrate_from_event_log through bounded replay by @bug-ops in #5861
  • docs(orchestration): correct llm-planning feature flag default claim by @bug-ops in #5858
  • fix: correct workspace license declaration to MIT OR Apache-2.0 by @bug-ops in #5865
  • chore: bump MSRV to 1.97 by @bug-ops in #5872
  • feat(llm,commands,core): add runtime /think-tokens and /reasoning-effort commands by @bug-ops in #5876
  • fix(skills): wire group_structured/similarity/injection-score at cold start by @bug-ops in #5877
  • fix(llm): resolve OllamaProvider::name() hardcoding and embed misrouting by @bug-ops in #5879
  • fix(init): require confirmation before overwriting ZEPH_DURABLE_KEY by @bug-ops in #5880
  • fix(tools): scale adversarial policy timeout by provider type by @bug-ops in #5881
  • fix(a2a,config): give --connect its own client-side TLS/SSRF policy by @bug-ops in #5884
  • fix(gateway): expose Error::source() on GatewayError variants by @bug-ops in #5888
  • fix(llm): delegate think-tokens/reasoning-effort through routed providers by @bug-ops in #5890
  • ci: migrate lint-warning gate from RUSTFLAGS to build.warnings by @bug-ops in #5891
  • fix(llm): sweep stale Claude model IDs and generalize staleness warning by @bug-ops in #5901
  • fix(acp): scope persisted session listing/loading to owning client by @bug-ops in #5907
  • fix(llm): populate provider_name across all remaining LLM backends by @bug-ops in #5908
  • feat(plugins,skills,config,cli): add opt-in skill/plugin discovery-and-install marketplace by @bug-ops in #5910
  • fix(tools): forward checkpoint and confirmation methods through executor wrappers by @bug-ops in #5930
  • fix: resolve build.warnings gate fallout from #5891 migration by @bug-ops in #5960
  • fix(mcp): rehydrate input_schema for Qdrant-matched MCP tools by @bug-ops in #5972
  • fix(skills): wire trust config and RL routing head into ACP/serve/daemon by @bug-ops in #5976
  • fix(core,acp,tools): wire memory maintenance and capability governance into ACP/daemon/serve by @bug-ops in #5978
  • fix(commands): require trusted session for /image path reads by @bug-ops in #5988
  • fix(subagent): deliver resolved vault secret value to sub-agents by @bug-ops in #5990
  • fix(tools): forward checkpoint methods through Arc by @bug-ops in #5998
  • fix(config,llm): redact secrets from Debug output on 7 config structs by @bug-ops in #6004
  • fix(commands): require trusted session for /mcp and /plugins by @bug-ops in #6002
  • fix(config,mcp,a2a): redact three more secret-bearing Debug/Serialize leaks by @bug-ops in #6005
  • fix(serve): wire trust/policy/adversarial gate chain into serve-sessions by @bug-ops in #6007
  • fix(tools): forward requires_confirmation/is_tool_speculatable/execute_tool_call_confirmed through remaining ToolExecutor wrappers by @bug-ops in #6011
  • fix(db): redact_url no longer leaks part of password containing '@' by @bug-ops in #6013
  • fix(subagent,core): replay journaled result on durable subagent resume by @bug-ops in #6014
  • fix(config): stop migrate-config from duplicating advisory blocks and false-reporting orchestration inserts by @bug-ops in #6017
  • fix(commands): close requires_auth() fail-open gap in 19 CommandHandler impls by @bug-ops in #6033
  • fix(vault)!: default vault backend to age and reject unknown backend strings by @bug-ops in #6025
  • fix(tools): ToolExecutor forwarding gaps, symlinked checkpoint drop, checkpoint tests by @bug-ops in #6036
  • fix(serve,gateway): dispatch recognized slash commands before sanitization by @bug-ops in #6039
  • fix(durable): enforce encryption_gate INV-8 policy at runtime by @bug-ops in #6040
  • fix(acp,daemon,serve): wire SelfCheckPipeline, TrajectorySentinel, and SkillInvokeExecutor into all entry points by @bug-ops in #6047
  • fix(worktree): reconcile detached-HEAD worktrees, run prune on clean, clamp zero timeout by @bug-ops in #6051
  • fix(tui): clear durable overlay and distinguish gate-rejection status by @bug-ops in #6053
  • fix(config): wire dead validate() functions and fix migrate idempotency guards by @bug-ops in #6058
  • fix(tui): clear fleet/task-registry overlays and fix Display padding in fleet panel by @bug-ops in #6060
  • fix(skills): gate load_skill through the same trust pipeline as invoke_skill by @bug-ops in #6062
  • fix(tools)!: remove permissive defaults on ToolExecutor/ErasedToolExecutor by @bug-ops in #6067
  • fix(mcp): drop input_schema on MAX_SCHEMA_DEPTH cap hit by @bug-ops in #6075
  • fix(worktree): gate force-removal on git prunable marker, add --force flag by @bug-ops in #6076
  • fix(mcp): pin SSRF-validated addresses on connect and add missing OAuth timeout by @bug-ops in #6078
  • fix(config): validate hot-reloaded config before applying to live agent by @bug-ops in #6083
  • fix(mcp): close three gaps in the MCP tool trust pipeline by @bug-ops in #6088
  • fix(skills): wire requires_trust_check setter and route CLI invoke through SkillTrustGate by @bug-ops in #6090
  • fix(security): consolidate duplicated sanitization and redaction logic by @bug-ops in #6091
  • fix(mcp): pin cross-origin OAuth discovered-issuer requests per-request by @bug-ops in #6092
  • fix(mcp): pin DNS resolution for OAuth redirect-hop targets by @bug-ops in #6097
  • fix(channels): add 429 retry-with-backoff and Telegram send_status by @bug-ops in #6100
  • fix(core): offload hot-path blocking fs I/O to spawn_blocking by @bug-ops in #6101
  • fix(acp): wire shutdown-summary, channel identity, help/model registry, and code-RAG into ACP by @bug-ops in #6102
  • fix(plugins): route add_remote/download_archive through anti-downgrade HTTPS client by @bug-ops in #6104
  • chore(build): disable sccache and enable incremental compilation locally by @bug-ops in #6105
  • fix(plugins): cap archive size in add_remote/download_archive by @bug-ops in #6112
  • fix(channels): bound send_status timeout and add Telegram 429 retry by @bug-ops in #6113
  • fix(scheduler): correct daemon_status recency, RTW-A provenance tiers, and eval_provider by @bug-ops in #6116
  • fix(core): offload trace-file writes and fix MetricsBridge clobbering by @bug-ops in #6117
  • fix(db): fix Postgres LIMIT=0 crash and collapse DbConfig pool fields by @bug-ops in #6121
  • fix(subagent): live TTL re-check for delivered secrets and per-task secret-request lookup by @bug-ops in #6123
  • fix(scheduler): harden provenance trust boundary and push recent-runs query into SQL by @bug-ops in #6125
  • fix(scheduler): close RTW-A capability-attenuation and injection-pattern gaps by @bug-ops in #6126
  • fix(durable): wire control-entry HMAC to a production key with read-side verification by @bug-ops in #6130
  • fix(tui): close panel mutual-exclusion, status-label, and dispatch gaps by @bug-ops in #6131
  • fix(durable): add process-exclusivity lock for colliding agent_turn ExecutionIds by @bug-ops in #6133
  • fix(index): resolve workspace_root for IndexMcpServer registration by @bug-ops in #6134
  • fix(memory): wire MAGE soft-escalation gate and fix community.rs newline injection by @bug-ops in #6135
  • fix(core): parallelize apply_tier_results hooks and align WATCHED_SPANS names by @bug-ops in #6137
  • fix(security): rate-limit failed-auth requests in gateway and a2a by @bug-ops in #6136
  • fix(mcp): lock tool_list for OAuth-transport MCP connections by @bug-ops in #6138
  • fix(tui): wire live worktree state and turn-latency/classifier metrics by @bug-ops in #6141
  • fix(serve): wire per-session capability scopes, skill/memory tools, and policy fail-closed by @bug-ops in #6140
  • fix(mcp): release tool_list_locked on server removal and probe-block by @bug-ops in #6143
  • fix: thread --vault/--vault-key/--vault-path CLI flags into doctor/bench/gonka/cocoon by @bug-ops in #6144
  • fix(security): scan the full CI feature bundle in the cargo-deny advisories gate by @bug-ops in #6148
  • fix(llm): extend Claude no-prefill handling and correct stale model ID by @bug-ops in #6145
  • fix(worktree): harden clean/list test coverage and dedupe CLI/agent clean pipeline by @bug-ops in #6149
  • fix(core): stop misreporting clean task exits as force-aborted in shutdown_all by @bug-ops in #6150
  • fix(skills): share one RoutingHead instance across ACP/serve sessions by @bug-ops in #6151
  • fix(session): correct session_dir() double-nesting and implement fork blob-copy by @bug-ops in #6152
  • fix(llm): apply Claude no-prefill gate to all request-construction paths by @bug-ops in #6154
  • fix(session): treat already-hard-linked fork destination as a no-op by @bug-ops in #6157
  • fix(llm): reduce Claude no-prefill bypass discoverability, add HTTP-level test coverage by @bug-ops in #6159
  • fix(orchestration): enforce NetworkScope::Deny for spawned sub-agents and RunInline tasks by @bug-ops in #6161
  • fix(core): register MagicDocs on tool-result push, not only assistant push by @bug-ops in #6160
  • fix: convert 9 remaining Display impls from write_str to pad by @bug-ops in #6162
  • fix(skills): auto-arm integrity re-check on trust promotion by @bug-ops in #6164
  • fix(security): redact secret fields in IbctKey(Config)/McpTransport Serialize by @bug-ops in #6165
  • fix: box::pin build_agent_factory awaits to fix large_futures on macOS by @bug-ops in #6168
  • fix: safe URL redaction fallback, migrate-config validation warning, --tui feature guard by @bug-ops in #6167
  • fix: wire remaining 5 memory-maintenance loops into ACP/daemon/serve by @bug-ops in #6169
  • test: guard workspace linker_messages=allow against silent removal by @bug-ops in #6171
  • fix(commands): close command-list drift between COMMANDS, registries, and TUI autocomplete by @bug-ops in #6172
  • fix: unify skill/plugin registry disabled-state messaging by @bug-ops in #6174
  • fix(config): redact secret fields in channel/A2A/MCP config Serialize by @bug-ops in #6173
  • fix(sanitizer): remove dead Pipeline/Stage abstraction by @bug-ops in #6178
  • fix: box remaining large_futures call sites reintroduced by #6169 by @bug-ops in #6181
  • fix(core): pass model identifier, not provider name, to is_reasoning_model by @bug-ops in #6182
  • test: exercise real production wiring in acp/daemon memory-loop tests by @bug-ops in #6179
  • fix(sanitizer): qualify broken rustdoc intra-doc link to ClassifierMetrics by @bug-ops in #6184
  • security: add gitleaks allowlist for known test-fixture dummy secrets by @bug-ops in #6186
  • refactor: consolidate memory-maintenance-loop wiring into one shared function by @bug-ops in #6185
  • refactor(durable): dedup step-cap check and warn on unsafe shared_db migration topology by @bug-ops in #6187
  • refactor(mcp): extract shared connect-scaffolding helpers by @bug-ops in #6188
  • fix(llm): resolve reasoning_amplification model identifier for Router/TriageRouter/CandleProvider by @bug-ops in #6190
  • ci: exercise registry feature in PR-gating jobs, not only post-merge by @bug-ops in #6189
  • perf(worktree): cache canonicalized worktree root, validate before mutate by @bug-ops in #6192
  • fix(vault): require --force to overwrite an existing secret by @bug-ops in #6191
  • refactor(common): consolidate ToolName/ProviderName/SkillName newtype boilerplate by @bug-ops in #6193
  • refactor(config): dedup migrate idempotency checks, add shadow_sentinel step by @bug-ops in #6194
  • fix(llm): make Claude no-prefill gate compile-time enforced by @bug-ops in #6196
  • refactor(agent-context): replace positional-arg chain with param structs by @bug-ops in #6195
  • docs(a2a): reconcile IBCT wire-format drift between specs and implementation by @bug-ops in #6198
  • refactor(agent-persistence): remove dead redaction_applied field and stale TODO by @bug-ops in #6199
  • fix(a2a): add Agent Card JWS signature verification and trust policy by @bug-ops in #6202
  • fix(commands,durable): flip requires_auth default to fail-closed, fix durable replay dedup by @bug-ops in #6203
  • build(deps): bump rmcp to 2.2.0 to resolve Cargo.lock drift by @bug-ops in #6206
  • feat(session): add /cd command and --safe-mode troubleshooting flag by @bug-ops in #6207
  • feat(worktree): add disk-quota config and automatic reconciliation by @bug-ops in #6204
  • fix(a2a): wire AgentRegistry into --connect and fix JWS canonicalization by @bug-ops in #6209
  • docs(book): fix stale claude-sonnet-4-5 model IDs in 5 files by @bug-ops in #6210
  • docs(book): fix stale claude-opus-4-5 model IDs in acp.md (#6211) by @bug-ops in #6212
  • refactor(worktree): collapse sweep() to a single reconcile() call per tick by @bug-ops in #6213
  • docs(llm): add missing router thinking-budget delegation spec by @bug-ops in #6214
  • test(subagent): close coverage/doc gaps from #5991/#5993 review by @bug-ops in #6215
  • fix(tools): clamp shell fallback cwd into sandbox for path-token-free commands by @bug-ops in #6216
  • fix(config): remove inert A2aServerConfig::require_tls/ssrf_protection fields by @bug-ops in #6218
  • fix(tools): gate context-less spawn_background behind cfg(test) by @bug-ops in #6219
  • refactor(core): extract shared Agent skill-config builder chain by @bug-ops in #6220
  • chore(agent-tools): remove unused zeph-* dependencies by @bug-ops in #6222
  • refactor(scheduler): route DynSchedulerExecutor through DynExecutor erasure path by @bug-ops in #6223
  • refactor(common): consolidate treesitter extension-to-language mapping by @bug-ops in #6225
  • spec(072): multimodal MCP ContentBlock passthrough to vision-capable LLM providers by @bug-ops in #6228
  • feat(memory): add MemGuard type-aware retrieval composition by @bug-ops in #6226
  • refactor(acp): extract build_acp_agent seam and add skill-config regression test by @bug-ops in #6227
  • refactor(tools): migrate Arc to DynExecutor erasure path by @bug-ops in #6230
  • spec(073-orch-ensemble-merge): add specification by @bug-ops in #6231
  • spec(orchestration): add HITL interrupt checkpoint specification by @bug-ops in #6233
  • chore(bench): remove dead BenchIsolation type by @bug-ops in #6236
  • feat(zeph-tools,zeph-llm): add ToolOutput.media plumbing for MCP image passthrough by @bug-ops in #6238
  • spec(075-orchestration-node-control-parity): add specification by @bug-ops in #6242
  • feat(tui): add read-only settings view and transcript search by @bug-ops in #6246
  • feat(orchestration): implement deterministic ensemble-merge for PlanVerifier by @bug-ops in #6247
  • fix(zeph-worktree): close check-then-act race in WorktreeManager::create() admission by @bug-ops in #6252
  • fix(durable): wire finalize(Completed/Failed) into production execution paths by @bug-ops in #6253
  • fix(cli): accept --init/--migrate-config as flag aliases for subcommands by @bug-ops in #6280
  • fix(tui): wire TaskSupervisor into phase-2 startup, add t task-panel toggle by @bug-ops in #6281
  • fix(security): reject empty-string bearer/vault tokens across ACP and shared auth middleware by @bug-ops in #6282
  • fix(subagent): scope worktree admission quota and classify setup failures correctly by @bug-ops in #6283
  • fix(acp): purge persisted session data on session/delete by @bug-ops in #6284
  • fix(orchestration): ground verifier tool-call claims against real execution trace by @bug-ops in #6286
  • fix(durable): spawn DurableRetentionService background prune sweep in production by @bug-ops in #6285
  • fix(a2a): enforce IBCT capability tokens on client and server request paths by @bug-ops in #6289
  • fix(core): resolve scheduler-feature build gap and semaphore-acquire fail-open by @bug-ops in #6290
  • fix(runtime): warn when --bare skips worktree subsystem bootstrap by @bug-ops in #6291
  • fix(core): correct turn-latency metrics and idle-window bg status visibility by @bug-ops in #6292
  • fix(deps): bump yanked spin 0.9.8/0.10.0 to 0.9.9/0.10.1 by @bug-ops in #6294
  • fix(security): bound ShadowSentinel hot-path DB reads with an explicit timeout by @bug-ops in #6293
  • fix(security): enable PII filter/secret masking by default and stop leaking gateway auth token by @bug-ops in #6295
  • fix(mcp): bound unbounded regex cache in name_referenced_in by @bug-ops in #6296
  • fix(core): parallelize PreToolUse hooks, backfill extraction, dedupe MAGE mapping by @bug-ops in #6297
  • fix(core): dedupe per-turn skill-stats fetch and query embedding in rebuild_system_prompt by @bug-ops in #6298
  • fix(orchestration): ground whole-plan verify_plan() against DAG-wide tool trace by @bug-ops in #6299
  • fix(durable): reclaim crash-orphaned running executions via staleness sweep by @bug-ops in #6300
  • feat(orchestration): per-task run_timeout, Mode-1 recovery, and plan-verification-incomplete signal by @bug-ops in #6304
  • fix(core): strip ephemeral Image parts before persistence writes by @bug-ops in #6307
  • release: v0.22.1 by @bug-ops in #6309

Full Changelog: v0.22.0...v0.22.1