Repository navigation
Fence native Muse Code file access with bubblewrap - #1120
Merged
seathatflowsinourveins merged 7 commits intoOct 15, 2026
Merged
Conversation
Authority: adjudication-pr1120-81008f54-20261015.md:13-23; MICRO-81008f54.md:14-17. Isolation-class details remain in those files. Source: openai/codex rust-v0.162.1, codex-rs/protocol/src/permissions.rs:2347-2367. Source: containers/bubblewrap v0.11.1, bubblewrap.c:380-388 and bwrap.xml. Source: CPython v3.13.16, Doc/library/os.rst (open/fdopen/dir_fd) and Doc/library/subprocess.rst (Popen.wait/terminate/kill). Regressions: tests/test_muse_file_fence.py:361,373,392,426; additional deadline coverage at test_bounded_run_timeout_returns_124. Four fail-first controls and PR-owned tests recorded in ruled-extra.json.
Scope: adjudication-pr1120-5cfb8346-20261015.md:19-25; GPT-VERDICT-5cfb83462.md blocker 1. Isolation-class details remain there. Source: openai/codex rust-v0.162.1, 092d3acd6bec3e3a14bdc7e7a2810ab628ab759d, codex-rs/protocol/src/permissions.rs:2360-2367,2573-2629. Implementation: tools/muse_file_fence.py:205,249. Regression: tests/test_muse_file_fence.py:416; fails at exact 5cfb834, passes after. Existing ordinary-directory and shell-role controls pass. No rebase or live model call. CC DELTA plus GPT delta and sealed loop stop remain controlling; P3 dispositions are retained in PR-body Follow-ups.
Authority: adjudication-pr1120-5cfb8346-20261015.addendum-01.md items 1-4; MICRO-delta-d8afbf04.md P2-a. Isolation-class details remain in those files. GPT-VERDICT-d8afbf046.md and pr1120-d8afbf04/review_output.json finding 1 were read after the explicit fold-in relay. P3s remain in body Follow-ups. Remove pointer resolution. Every role requires its own clone. Refusal tests test_reader_git_pointer_refused and test_external_common_metadata_refused_for_every_role fail at exact d8afbf0 and pass after. Ordinary-directory and prior role controls remain green. Ordinary metadata source: openai/codex rust-v0.162.1, codex-rs/protocol/src/permissions.rs:2347-2367. No pointer parity claim. No rebase or live call. CC DELTA and GPT fix5 at max and fast follow; anything below P1 after those goes to Follow-ups, with no further round.
seathatflowsinourveins
force-pushed
the
codex/ns2604-muse-file-fence-20261014
branch
from
October 15, 2026 05:30
e8734f8 to
42f81e8
Compare
seathatflowsinourveins
deleted the
codex/ns2604-muse-file-fence-20261014
branch
October 15, 2026 06:31
4 tasks done
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.
Scope
Native Muse Code's shell sandbox permits reads outside its workspace, and MCP
servers and hooks run outside that sandbox. Add a bubblewrap launcher around
the unchanged CC lane's exact
muse execargv, with named read-only inputs,only worktree/log writable binds, a synthetic home, a sanitized settings copy,
and only the specific read-only sign-in bind. Every live invocation first passes
an OS and native echo probe. The CC launcher is unchanged.
Omitted user settings use inert defaults when the default file is absent;
explicit invalid settings still refuse. Every role refuses Git pointer-file
layouts, reader included; runs use their own clone with read-only ordinary
Git metadata. The pointer-resolution implementation is removed, and no parity
claim for pointer layouts remains. Published native-run custody uses artifact names and a task/time
reference, preserving measured results without raw-output digest commitments.
Prior CC-ruled delta:
adjudication-pr1120-81008f54-20261015.md:13-23andMICRO-81008f54.md:14-17, implementation and tests at pinned5cfb8346.Prior narrowly ruled completion at pinned
d8afbf04:adjudication-pr1120-5cfb8346-20261015.md:19-25andGPT-VERDICT-5cfb83462.md, blocker1. Implementation:tools/muse_file_fence.py:205,:249; regression:tests/test_muse_file_fence.py:416. Finding details remain in those files.Independent CC DELTA and GPT delta remain required. No rebase before both pass
and the CC registry cue; the sealed loop stop controls any residual disposition.
Current authority:
adjudication-pr1120-5cfb8346-20261015.addendum-01.md, items1-4,and
MICRO-delta-d8afbf04.md, P2-a. Required refusal regression:test_reader_git_pointer_refused. Final CC DELTA and GPT delta run at max;after those reads, anything below P1 goes to Follow-ups per sealed disposition.
0f4ee075b2ab3af1b099d5ca1ecb8cae02ee3f5blane:foundationtools/muse_file_fence.py,tests/test_muse_file_fence.py,docs/decisions/2026-10-14-muse-file-fence.md,notes/muse-file-fence-20261014/{receipt,fix-round-1,fix-round-2,ruled-extra}.jsonand their evidence registry rows.The later explicit co-op registry cue supersedes the earlier rebase-order hold:
the read commit is
e8734f8241ffd7fc29bcb45e1d8284ccfb8bc76f; its pure registryrebase is
42f81e80b7584b0503d8055a57d885dc7609cc45on the base above. Exactlander
lg_change_idwith the evidence registry excluded iscfdb8b1caf5b324f0ad37b128d4ed27fcb67879dat both heads. All seven ownednon-registry files are byte-identical; only the evidence registry conflicted.
CC/GPT fix5 reads bind the ruled commit and carry by this change identity.
SOTA sources
installed
0.11.1/ Ubuntu0.11.1-1ubuntu0.3. Pinnedbwrap.xml
documents every used flag; the decision lists them explicitly. In particular,
--remount-ro /seals root while preserving nested writable binds. Thecaller defines the mount and namespace policy, per upstream README. Ordered
bind mounts give
/tmpnamed inputs and worktree-local inputs read-onlyoverlays while temporary writes stay in the log tree.
_bin_openflags,_mkstemp_inner,NamedTemporaryFileand_TemporaryFileCloser: exclusive randomized creation and context cleanuppreserve existing user files during the mandatory filesystem probe.
and repository layout,
matching installed Git
2.53.0. The CC addendum-01 requires every role torefuse pointer layouts and use its own clone. Only ordinary metadata layouts
are accepted; upstream pointer-layout parity is not claimed.
default_read_only_subpaths_for_writable_root: the adopted Git metadataboundary. bubblewrap.c:380-388
at the existing pin defines parent lifetime. CPython
v3.13.16os.rst,
open/fdopen/dir_fd, andsubprocess.rst,
Popen.wait/terminate/kill, supply the native interfaces.Source commit
092d3acd6bec3e3a14bdc7e7a2810ab628ab759dwas verified from thepinned mirror. The prior pointer-layout implementation is superseded by the
sealed addendum-01; current source adoption covers ordinary directory metadata.
rankedfeeds_fence.sh,fence_checks_rankedfeeds.shand
fence_probe_rankedfeeds.shreference implementation from themuse-rankedfeeds-20261014kit: named read-only binds, private home, boundedwritable run area and model-free named checks. Source hashes are retained in
the acceptance receipt. This native route uses host networking for Meta;
it does not adopt that Claude/OmniRoute arm's isolated network bridge.
configuration,
hooks,
MCP,
sandbox,
approval modes,
and Muse Wonder, read 2026-10-14.
Installed Muse
1.4.7-R6101.1help and native echo probes verify the relevantsurface. Both current
mcpServersand documented legacymcp_serversareremoved; project
.muse/hooks.jsonis masked despite--trust-workspace.Evidence-class table
test_unfenced_launcher_canary_read_fenced_denial, synthetic runtime, no modeltest_native_echo_cannot_start_extensions, native 1.4.7 echo, four positive marker controlsfix-round-1.json; log-input/runtime/sign-in guards preservedfix-round-2.jsonruled-extra.json;MICRO-81008f54.md:14-17; four required fail-first tests and additional deadline coverageruled-extra.jsonaddendum-01 decision; reader refusal test fails at exactd8afbf04 and passes after; ordinary-directory and shell-role controls remain greenLocal commands run
Decision record
docs/decisions/2026-10-14-muse-file-fence.mddescribes mount/config policy,upstream sources, the reference adaptation, tests, evidence and alternatives.
notes/muse-file-fence-20261014/receipt.jsonretains derived native results andnon-content-derived private custody references. Raw event streams, session IDs
and prompts stay private; unpublished native output digests are not published.
The single reserved smoke is finished; no additional live call is authorized.
The live receipt preserves original timestamps/counts/model facts. Historical
fence argv and precise source identity were not captured for independent review.
These fix rounds rerun model-free OS and native echo controls; they make no
second live-smoke claim. Source fingerprints identify versioned vendor and
launcher/reference scripts separately from private native run content.
Host evidence
No host status, default or runtime readiness change. No credentials are opened,
hashed, copied or logged by this wrapper. The single explicitly mounted sign-in
file remains readable by the native process and same-UID tools. Its contents are
outside every receipt. Shared networking permits Meta endpoints, other outbound
hosts and loopback services; disabled web tools do not create an egress allowlist.
Builder/reviewer modes, hostile same-UID host races, resource limits and kernel
security are not qualified by the reader smoke. No broker/account/unit action.
Follow-ups
CC DELTA P3-a:
docs/decisions/2026-10-14-muse-file-fence.md:245-248atruled head
e8734f82is superseded by the addendum-01 decision. Record-onlycorrection remains a Follow-up. Citation:
research-cc-role-20261008/pr1120-claude-micro-e8734f82.md:22, P3-a,SHA256
72ef1102cb7f57472e10aae0c9c0ce1a44d953ab4a5c9e77445c2e7c5842836c.CC DELTA P3-b:
tests/test_muse_file_fence.py:433,463at ruled heade8734f82; correction retained by citation atresearch-cc-role-20261008/pr1120-claude-micro-e8734f82.md:23, P3-b,SHA256
72ef1102cb7f57472e10aae0c9c0ce1a44d953ab4a5c9e77445c2e7c5842836c.Local review Follow-up:
/var/tmp/ns2604-local-review-20261013/pr1120-e8734f82/review_output.json,title
[P2] Mount the runtime after the /tmp overlay. Retained under the CC'sno-further-round disposition; no branch change is made for this finding.
GPT fix4 P3-1:
GPT-VERDICT-d8afbf046.md, FOLLOW-UPS1; input qualification andshared-network boundaries stay open. The current layout narrowing supersedes
that verdict's accepted pointer-layout discussion; no new qualification claim.
GPT fix4 P3-2: same verdict, FOLLOW-UPS2; phase/failure receipts, event-shape
validation and safe fresh-log recovery remain separate follow-up work.
GPT fix4 P3-3: same verdict, FOLLOW-UPS3; portable evidence, citation custody,
verdict-copy fingerprint reconciliation and historical registry locators
remain open. Supplied review records do not certify missing historical bytes.
CC delta P3-a/P3-b:
MICRO-delta-d8afbf04.md, Findings P3-a/P3-b. Retaintheir source-class dispositions for later work. Addendum-01 disposes of the
pointer and linked-worktree classes by refusing those layouts for every role;
no claim about unmeasured cases is introduced.
GPT fix3 P3-1:
GPT-VERDICT-5cfb83462.md, FOLLOW-UPS1; qualification and sharednetwork scope remain under the prior adjudication. No additional qualification
or network claim is introduced by the current scoped correction.
GPT fix3 P3-2: same verdict, FOLLOW-UPS2 and
tools/muse_file_fence.pyat5cfb8346:289,294,421,426,430,454; retain safe failure/receipt recovery andevent-shape validation work for later authorization.
GPT fix3 P3-3: same verdict, FOLLOW-UPS3; portable evidence, policy-compliant
source custody and inherited numerical registry locators remain open. No
historical reconstruction is labelled measured by this correction.
CC micro P3-1:
MICRO-81008f54.md:18; input-path qualification remains aseparate follow-up, preserving fail-closed behavior.
CC micro P3-2:
MICRO-81008f54.md:19; filesystem socket masks and the sharednetwork namespace are distinct. Abstract Unix sockets remain part of that
shared namespace; no service reachability measurement is claimed.
CC micro P3-3:
MICRO-81008f54.md:20andtests/test_provenance_digest_custody.py:1-12; inherited notes custody fieldsmust follow the repository rule. Use reviewed published captures or custody
locators in follow-up work; no new private-file digest is added by this delta,
and no scanner exception or baseline is introduced.
Astra P3, portable evidence and historical source identity: retain reviewed
reference-script captures and pinned Muse documentation/help captures when
available. The cited Meta pages remain UNMIRRORED, and the historical live
fence argv/source identity is OPEN. Do not label reconstructed metadata a
measurement; present native echo/canary results at their tested source state.
Astra P3, failure/retry receipts: add safe phase/failure records and refusal,
timeout and recovery tests in later authorized work. Version/probe errors
currently leave partial artifacts and a generic refusal; retry uses fresh
logs. No replay or restore may bypass the mandatory probe.
Astra P3, historical manifest locators: preserve the inherited pinned/history
citations. Registry insertions shift numeric line locators; the review found
no newly introduced current-head defect. A later registry-locator improvement
should cover those inherited unpinned references without rewriting history.
The final local validator reports the same nine model-currency age errors
classified as the exempt CI-wide incident by the supplied Astra read. No
model-currency record or validation gate is changed by this bounded fix.
Checklist