Fail closed by default when the core OS sandbox can't be applied - #131
Open
kvey wants to merge 1 commit into
Open
Fail closed by default when the core OS sandbox can't be applied#131kvey wants to merge 1 commit into
kvey wants to merge 1 commit into
Conversation
Previously every confinement layer was best-effort: when seccomp (Linux) or Seatbelt (macOS) failed to install, the worker logged a note to stderr and ran the agent anyway, so a run advertised as isolated could silently execute with only process separation. Fail-closed behavior required the operator to opt in via CHIDORI_ISOLATE_REQUIRE_SANDBOX=1. Reverse the default: a missing core confinement layer now refuses the run with an actionable error (including the sandbox skip notes). Operators who accept a degraded posture must opt in explicitly with CHIDORI_ISOLATE_REQUIRE_SANDBOX=0, and the worker still announces the downgrade loudly on stderr. The auxiliary layers (network namespace, Landlock) remain best-effort. On platforms with no sandbox implementation at all, the default stays the loud downgrade (the startup banner already says 'no OS sandbox layer'); an explicit truthy value forces fail-closed even there. Also move the CHIDORI_ISOLATE_SELFTEST probes ahead of the fail-closed gate so skip-aware tests keep their unavailability markers, add a test-only CHIDORI_ISOLATE_TEST_FORCE_UNCONFINED hook to exercise the gate end-to-end, and update the docs and startup banner to match. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018REuzMFXqwDZsQnnTNsYpz
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Previously every confinement layer was best-effort: when seccomp (Linux)
or Seatbelt (macOS) failed to install, the worker logged a note to stderr
and ran the agent anyway, so a run advertised as isolated could silently
execute with only process separation. Fail-closed behavior required the
operator to opt in via CHIDORI_ISOLATE_REQUIRE_SANDBOX=1.
Reverse the default: a missing core confinement layer now refuses the run
with an actionable error (including the sandbox skip notes). Operators who
accept a degraded posture must opt in explicitly with
CHIDORI_ISOLATE_REQUIRE_SANDBOX=0, and the worker still announces the
downgrade loudly on stderr. The auxiliary layers (network namespace,
Landlock) remain best-effort. On platforms with no sandbox implementation
at all, the default stays the loud downgrade (the startup banner already
says 'no OS sandbox layer'); an explicit truthy value forces fail-closed
even there.
Also move the CHIDORI_ISOLATE_SELFTEST probes ahead of the fail-closed
gate so skip-aware tests keep their unavailability markers, add a
test-only CHIDORI_ISOLATE_TEST_FORCE_UNCONFINED hook to exercise the gate
end-to-end, and update the docs and startup banner to match.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_018REuzMFXqwDZsQnnTNsYpz