You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Critical fixes:
- executor: nil TrustEngine now defaults to DenyAllTrustEvaluator (fail-closed, not open)
- executor: ActionAsk with no Approver configured now denies (fail-safe); with Approver
calls Approver.Request then blocks on WaitForResolution instead of returning error
- orchestrator: ContainerManager.EnsureContainer now accepts executor.SandboxConfig so
*ContainerManager satisfies executor.ContainerExecutor (type mismatch resolved)
Security / correctness:
- executor: Action is now a type alias for policy.Action (compile-time parity, no drift)
- executor: Approver interface gains Request() method for creating approvals before waiting
- orchestrator: bind mount Source/Target validated with filepath.IsAbs + path traversal check
- orchestrator: EnsureContainer called before ExecInContainer in sandbox path
policy/store.go:
- Grant: DELETE + INSERT wrapped in a single transaction (atomic upsert)
- Check: real DB errors logged separately from "no rows found"
- List: time.Parse errors logged instead of silently discarded
orchestrator/container_manager.go:
- Init command failures now logged (were silently dropped)
- rows.Err() checked after container cache load loop
Tests added:
- TestDenyAllTrustEvaluator (fail-closed default)
- TestTrustEngineDataRace (concurrent SetMode/Evaluate under -race)
- TestExecute_ActionAsk_NoApprover_Denies
- TestExecute_ActionAsk_WithApprover_Blocks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0 commit comments