Bounded whole-worker executor isolation proof for #53 #78

Closed
opened 2026-10-08 15:42:33 +00:00 by kilo · 3 comments
Member

Goal

Owner-selected bounded research and native engineering proof, authorized 2026-10-08 in the explicit 'Kernel #53 — Bounded Whole-Worker Isolation Proof' directive. Determine whether maintained rootless OCI (Podman plus supported crun first) can confine an entire existing coding-agent harness's native file/terminal/subprocess paths independently of approval callbacks. Preserve #53 AC4 universal current-authority enforcement.

Why

#53 comments 15606/15612 establish a separate prerequisite: denial of approval requests and #50 verification-only isolation do not prove whole-worker executor enforcement. Static containment, operation admission, dynamic revocation, descendant settlement and uncertain in-flight effects must remain distinct.

Scope

Inspect exact maintained Podman/crun and bubblewrap sources/releases/licenses/security advisories, including GHSA-pxhw-h44j-8pfx / CVE-2026-87766. Compare existing Runtime/Workspace seams. Build the smallest reproducible synthetic whole-worker PoC using one disposable rootless worker per Attempt, pinned tool/image provenance, closed environment, read-only trusted inputs, disposable workspace, no ambient credentials/host engine socket/privileged or shared-PID operation, default-deny network and bounded resources. Exercise an ephemeral narrow trusted synthetic relay; no new permanent service or production activation. Record warranted #50 security follow-up separately, without modifying its scope or implementation.

Acceptance Criteria

  1. A concise mechanism decision record retains exact versions/revisions/licenses/requirements, resource/threat inventory, source guarantees versus observations/inference/unknowns and GO/NO_GO/INCONCLUSIVE verdict.
  2. Reproducible synthetic native experiment and negative suite cover approval-free native file/terminal execution; synthetic host/controller/credential read-write attempts; child/grandchild/setsid descendants; symlink/FD/proc/mount/namespace escapes; IPv4/IPv6/DNS/Unix/control socket paths; unauthorized relay operations; expiry/revocation during execution and pending effects; cancellation/deadline/controller crash/lost observation; bystander process/workspace preservation. Verify prohibited effects are absent, not just rejected responses.
  3. Record actual commands, environment/tool/image digests and outcomes. Missing enforcement preconditions produce honest BLOCKED/INCONCLUSIVE cells, not skipped-native PASS or privileged/weakened substitutes. Native requirements are explicit and normal CI skips are not conformance.
  4. Separate static containment, new external-operation authorization, dynamic revocation, termination/settlement and in-flight uncertainty. Static writable mounts/retained FDs cannot be relabelled dynamically revocable. If complete AC4 cannot be proved, name the precise missing mechanism and propose the smallest additional trusted executor/broker investigation without implementing a new security architecture.
  5. Integration proposal uses existing Runtime/Workspace/Operation seams without changing production behavior or asserting compatibility with real Codex/Kilo. Enumerate remaining native-harness/tool-closure proofs before #53 AC4 reception.
  6. Required make check, make package-check, make audit and applicable native gates, plus fresh read-only whole-PR pr-reviewer at frozen exact HEAD/base, inheriting GPT-6.1 Sol High. At most 10 review invocations, append-only separate delivery ledger. Negative technical conclusions may satisfy bounded research only if independently supported; no fabricated isolation success.

Constraints

One ordinary issue branch from fetched canonical develop, one unmerged develop PR. Initiation base verified 19775b9679. Do not resume/reset/modify concluded loop ledger. No live inference, production/private owner state, active IDE reuse, cross-repository mutation, permanent service, host-wide settings/sysctls/sub-ID/global permission changes, custom sandbox/harness or architecture replacement. Provision only disposable user-owned native tooling. No main/release/deploy/merge. Keep #53 open and gated. Ordinary bounded engineering remediation is authorized; genuine new security/authority commitments require owner approval.

  • Gate: #53
  • Prior research/lifetime/security/source evidence: #47, #48, #50, #61
  • docs/adr/0007-shared-harness-routing-observability.md
  • docs/adr/0008-linux-bubblewrap-verification.md
  • docs/architecture/threat-model.md
  • docs/architecture/harness-feasibility.md

Non-Goals

No #53 integration or closure, no synthetic-container PASS labelled real-harness conformance, no production security-profile adoption, no Router ownership change or replacement model-tool loop.

## Goal Owner-selected bounded research and native engineering proof, authorized 2026-10-08 in the explicit 'Kernel #53 — Bounded Whole-Worker Isolation Proof' directive. Determine whether maintained rootless OCI (Podman plus supported crun first) can confine an entire existing coding-agent harness's native file/terminal/subprocess paths independently of approval callbacks. Preserve #53 AC4 universal current-authority enforcement. ## Why #53 comments 15606/15612 establish a separate prerequisite: denial of approval requests and #50 verification-only isolation do not prove whole-worker executor enforcement. Static containment, operation admission, dynamic revocation, descendant settlement and uncertain in-flight effects must remain distinct. ## Scope Inspect exact maintained Podman/crun and bubblewrap sources/releases/licenses/security advisories, including GHSA-pxhw-h44j-8pfx / CVE-2026-87766. Compare existing Runtime/Workspace seams. Build the smallest reproducible synthetic whole-worker PoC using one disposable rootless worker per Attempt, pinned tool/image provenance, closed environment, read-only trusted inputs, disposable workspace, no ambient credentials/host engine socket/privileged or shared-PID operation, default-deny network and bounded resources. Exercise an ephemeral narrow trusted synthetic relay; no new permanent service or production activation. Record warranted #50 security follow-up separately, without modifying its scope or implementation. ## Acceptance Criteria 1. A concise mechanism decision record retains exact versions/revisions/licenses/requirements, resource/threat inventory, source guarantees versus observations/inference/unknowns and GO/NO_GO/INCONCLUSIVE verdict. 2. Reproducible synthetic native experiment and negative suite cover approval-free native file/terminal execution; synthetic host/controller/credential read-write attempts; child/grandchild/setsid descendants; symlink/FD/proc/mount/namespace escapes; IPv4/IPv6/DNS/Unix/control socket paths; unauthorized relay operations; expiry/revocation during execution and pending effects; cancellation/deadline/controller crash/lost observation; bystander process/workspace preservation. Verify prohibited effects are absent, not just rejected responses. 3. Record actual commands, environment/tool/image digests and outcomes. Missing enforcement preconditions produce honest BLOCKED/INCONCLUSIVE cells, not skipped-native PASS or privileged/weakened substitutes. Native requirements are explicit and normal CI skips are not conformance. 4. Separate static containment, new external-operation authorization, dynamic revocation, termination/settlement and in-flight uncertainty. Static writable mounts/retained FDs cannot be relabelled dynamically revocable. If complete AC4 cannot be proved, name the precise missing mechanism and propose the smallest additional trusted executor/broker investigation without implementing a new security architecture. 5. Integration proposal uses existing Runtime/Workspace/Operation seams without changing production behavior or asserting compatibility with real Codex/Kilo. Enumerate remaining native-harness/tool-closure proofs before #53 AC4 reception. 6. Required make check, make package-check, make audit and applicable native gates, plus fresh read-only whole-PR pr-reviewer at frozen exact HEAD/base, inheriting GPT-6.1 Sol High. At most 10 review invocations, append-only separate delivery ledger. Negative technical conclusions may satisfy bounded research only if independently supported; no fabricated isolation success. ## Constraints One ordinary issue branch from fetched canonical develop, one unmerged develop PR. Initiation base verified 19775b9679cf04f071e4fe5f2542fe230272ea36. Do not resume/reset/modify concluded loop ledger. No live inference, production/private owner state, active IDE reuse, cross-repository mutation, permanent service, host-wide settings/sysctls/sub-ID/global permission changes, custom sandbox/harness or architecture replacement. Provision only disposable user-owned native tooling. No main/release/deploy/merge. Keep #53 open and gated. Ordinary bounded engineering remediation is authorized; genuine new security/authority commitments require owner approval. ## Links - Gate: https://forgejo.creatidy.com/Creatidy/creatidy-kernel/issues/53 - Prior research/lifetime/security/source evidence: #47, #48, #50, #61 - docs/adr/0007-shared-harness-routing-observability.md - docs/adr/0008-linux-bubblewrap-verification.md - docs/architecture/threat-model.md - docs/architecture/harness-feasibility.md ## Non-Goals No #53 integration or closure, no synthetic-container PASS labelled real-harness conformance, no production security-profile adoption, no Router ownership change or replacement model-tool loop.
Author
Member

#78 delivery: implementation complete, independent review pending (ordinal 1/10)

Standalone owner-authorized delivery (not /loop; prior loop QUEUE_EMPTY respected). Prior work preserved: branch/reflog verified (no prior commits/PR/ordinals), earlier session's pinned toolroot adopted (podman 6.1.3 pinned-commit build, crun 1.30.1 signature-verified release, conmon 2.2.1, provenance.json); noble 4.9.3 evaluated and rejected (EOL upstream, sandbox-relevant unfixed CVEs, unprivileged image creation blocked).

Subjects

  • Branch: issue-78-worker-isolation; PR: #81 (open, unmerged, target develop)
  • Base/mergebase: 19775b9679cf04f071e4fe5f2542fe230272ea36 (verified initiation base, unchanged)
  • HEAD: 3b9affa4d2e57394be54453a8c47dc0e3abd6916; 14 files, +2385/−5; no src/ or lockfile changes

Verdict recorded: FEASIBLE for the bounded synthetic proof (docs/architecture/whole-worker-isolation.md) — maintained rootless Podman 6.1.3 + crun 1.30.1 confined the whole synthetic worker with observed denials across the full required matrix; single-UID mapping and non-revocable writable binds recorded as explicit limitations; no AC4 reinterpretation; #53 stays gated on real-harness closure (comment 15612).

Validation (closed environment; no live inference, no real credentials)

  • uv sync --locked PASS; final make check package-check audit && git diff --check PASS: 1405 tests + 81 subtests, 71 honest native skips (53 #50 + 18 #78 without toolroot), format/lint/basedpyright strict/import boundaries/secret scan/reproducible package/installed smoke/audit PASS.
  • Native receipt make oci-worker-proof with CREATIDY_TEST_OCI_TOOLROOT=/tmp/kilo/kernel78-tooling: 26 passed, 0 failed, 0 native skips (18 isolation + 8 authority/profile). Every negative is an observed in-container or host-side fact (worker status records, host /proc scans, host file reads), not a return-code claim.
  • Whole-worker profile: rootless userns + PID/mount/network/IPC namespaces, cap-drop all, NNP, seccomp deny-list (unshare→EPERM observed), enumerated read-only mounts + single writable workspace, no inherited env/credentials, no engine socket, systemd cgroup memory/pids enforced (fallback refused fail-closed).

Separate finding (outside this PR): ADR 0008 bubblewrap 0.11.0 pin is in the affected range of GHSA-pxhw-h44j-8pfx / CVE-2026-87766 (setup-time same-privilege writes; unprivileged profile not known privilege-escalated). Registered as #80 with remediation scope; this PR contains no remediation.

Review: fresh independent whole-PR review of frozen HEAD/base reserved as ordinal 1/10 (none consumed previously). Issue stays open; no merge; no product GO; #53 remains gated.

## #78 delivery: implementation complete, independent review pending (ordinal 1/10) Standalone owner-authorized delivery (not /loop; prior loop QUEUE_EMPTY respected). Prior work preserved: branch/reflog verified (no prior commits/PR/ordinals), earlier session's pinned toolroot adopted (podman 6.1.3 pinned-commit build, crun 1.30.1 signature-verified release, conmon 2.2.1, provenance.json); noble 4.9.3 evaluated and rejected (EOL upstream, sandbox-relevant unfixed CVEs, unprivileged image creation blocked). **Subjects** - Branch: `issue-78-worker-isolation`; PR: https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/81 (open, unmerged, target develop) - Base/mergebase: `19775b9679cf04f071e4fe5f2542fe230272ea36` (verified initiation base, unchanged) - HEAD: `3b9affa4d2e57394be54453a8c47dc0e3abd6916`; 14 files, +2385/−5; no src/ or lockfile changes **Verdict recorded:** FEASIBLE for the bounded synthetic proof (docs/architecture/whole-worker-isolation.md) — maintained rootless Podman 6.1.3 + crun 1.30.1 confined the whole synthetic worker with observed denials across the full required matrix; single-UID mapping and non-revocable writable binds recorded as explicit limitations; no AC4 reinterpretation; #53 stays gated on real-harness closure (comment 15612). **Validation (closed environment; no live inference, no real credentials)** - `uv sync --locked` PASS; final `make check package-check audit && git diff --check` PASS: 1405 tests + 81 subtests, 71 honest native skips (53 #50 + 18 #78 without toolroot), format/lint/basedpyright strict/import boundaries/secret scan/reproducible package/installed smoke/audit PASS. - Native receipt `make oci-worker-proof` with `CREATIDY_TEST_OCI_TOOLROOT=/tmp/kilo/kernel78-tooling`: **26 passed, 0 failed, 0 native skips** (18 isolation + 8 authority/profile). Every negative is an observed in-container or host-side fact (worker status records, host /proc scans, host file reads), not a return-code claim. - Whole-worker profile: rootless userns + PID/mount/network/IPC namespaces, cap-drop all, NNP, seccomp deny-list (unshare→EPERM observed), enumerated read-only mounts + single writable workspace, no inherited env/credentials, no engine socket, systemd cgroup memory/pids enforced (fallback refused fail-closed). **Separate finding (outside this PR):** ADR 0008 bubblewrap 0.11.0 pin is in the affected range of GHSA-pxhw-h44j-8pfx / CVE-2026-87766 (setup-time same-privilege writes; unprivileged profile not known privilege-escalated). Registered as #80 with remediation scope; this PR contains no remediation. **Review:** fresh independent whole-PR review of frozen HEAD/base reserved as ordinal 1/10 (none consumed previously). Issue stays open; no merge; no product GO; #53 remains gated.
Author
Member

#78 delivery complete: READY_TO_MERGE (2/10 reviews, both APPROVE)

Final reviewed subjects: PR #81 (open, unmerged) — HEAD 494e623dff6f42bdbb87b93a37aa0f5a45488124 (3b9affa implementation + 494e623 evidence-accuracy remediation; no history rewrite), base/mergebase 19775b9679cf04f071e4fe5f2542fe230272ea36 (verified initiation base, unchanged), 14 files +2389/−5, no src/ or lockfile changes.

Independent review: ordinal 1 APPROVE (4 P3) on 3b9affa → remediated in 494e623 → ordinal 2 fresh whole-PR APPROVE (4 new P3, non-blocking, safe-direction wording residuals documented in the PR body) on exact 494e623/19775b9. Both reviewers: fresh isolated GLM-5.3 contexts (recorded binding), no implementation context, read-only; both independently re-ran every gate and the native receipt, verified all toolroot binary SHA-256s against provenance, corroborated upstream release status and the CVE advisory from public sources, and ran their own beyond-suite probes (mount/mknod EPERM, PID1-environ closure, boundary characterization, and re-derivation of the disclosed clone-with-namespace-flags seccomp residual — confirmed real, exactly as documented). Counter 2/10 preserved.

Canonical CI: SUCCESS on exact HEAD (run 142) and on 3b9affa (run 141).

Technical verdict (bounded synthetic proof): FEASIBLE. Maintained rootless Podman 6.1.3 + crun 1.30.1 confined the entire synthetic worker with observed denials across the full required matrix — static containment, Attempt-bound relay-only external effects with expiry/revocation/refusal classes, observed descendant settlement, honest in-flight uncertainty (lost replies recorded as executed-but-unconfirmed; workspace writes not revoked post-hoc), cancellation targeting only owned execution, monitor-death→unknown→reconciled. Runtime/platform: Ubuntu 24.04, WSL2 kernel 6.18.33.2, unprivileged user; evidence per cell in docs/architecture/whole-worker-isolation.md and per-attempt evidence JSON. Tests: 26 native-receipt items PASS 0 skip 0 fail (18 isolation + 8 authority/profile) under CREATIDY_TEST_OCI_TOOLROOT; full make check 1405 tests + 81 subtests, 71 honest native skips; package-check/audit/git diff --check PASS.

Guarantees still missing (explicit): single-UID mapping only (multi-UID confinement needs setuid newuidmap — privileged install outside authorization); no dynamic revocation of in-flight workspace writes (termination bounds, never retracts); clone-with-namespace-flags residual in the JSON seccomp format; synthetic worker only — real-harness executor closure per #53 comment 15612 remains; relay is a seam, not a durable broker.

Separate finding: ADR 0008 bubblewrap 0.11.0 affected by GHSA-pxhw-h44j-8pfx / CVE-2026-87766 (version-affected, profile-mitigated, no known escalation) — registered as #80, remediation outside this PR.

Next action to unblock #53: owner reviews/merges PR #81 under its own authority; then the #53 integration work item can adopt the recorded boundary (multi-UID decision + real-harness closure proof remain its prerequisites). This research does NOT close #53, authorize live inference, or establish real-harness AC4 conformance. Standalone delivery does not merge; explicit owner /loop retains merge authority.

## #78 delivery complete: READY_TO_MERGE (2/10 reviews, both APPROVE) **Final reviewed subjects:** PR https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/81 (open, unmerged) — HEAD `494e623dff6f42bdbb87b93a37aa0f5a45488124` (3b9affa implementation + 494e623 evidence-accuracy remediation; no history rewrite), base/mergebase `19775b9679cf04f071e4fe5f2542fe230272ea36` (verified initiation base, unchanged), 14 files +2389/−5, no `src/` or lockfile changes. **Independent review:** ordinal 1 APPROVE (4 P3) on 3b9affa → remediated in 494e623 → ordinal 2 fresh whole-PR APPROVE (4 new P3, non-blocking, safe-direction wording residuals documented in the PR body) on exact 494e623/19775b9. Both reviewers: fresh isolated GLM-5.3 contexts (recorded binding), no implementation context, read-only; both independently re-ran every gate and the native receipt, verified all toolroot binary SHA-256s against provenance, corroborated upstream release status and the CVE advisory from public sources, and ran their own beyond-suite probes (mount/mknod EPERM, PID1-environ closure, boundary characterization, and re-derivation of the disclosed clone-with-namespace-flags seccomp residual — confirmed real, exactly as documented). Counter 2/10 preserved. **Canonical CI:** SUCCESS on exact HEAD (run 142) and on 3b9affa (run 141). **Technical verdict (bounded synthetic proof): FEASIBLE.** Maintained rootless Podman 6.1.3 + crun 1.30.1 confined the entire synthetic worker with observed denials across the full required matrix — static containment, Attempt-bound relay-only external effects with expiry/revocation/refusal classes, observed descendant settlement, honest in-flight uncertainty (lost replies recorded as executed-but-unconfirmed; workspace writes not revoked post-hoc), cancellation targeting only owned execution, monitor-death→unknown→reconciled. Runtime/platform: Ubuntu 24.04, WSL2 kernel 6.18.33.2, unprivileged user; evidence per cell in `docs/architecture/whole-worker-isolation.md` and per-attempt evidence JSON. Tests: 26 native-receipt items PASS 0 skip 0 fail (18 isolation + 8 authority/profile) under `CREATIDY_TEST_OCI_TOOLROOT`; full `make check` 1405 tests + 81 subtests, 71 honest native skips; `package-check`/`audit`/`git diff --check` PASS. **Guarantees still missing (explicit):** single-UID mapping only (multi-UID confinement needs setuid newuidmap — privileged install outside authorization); no dynamic revocation of in-flight workspace writes (termination bounds, never retracts); clone-with-namespace-flags residual in the JSON seccomp format; synthetic worker only — real-harness executor closure per #53 comment 15612 remains; relay is a seam, not a durable broker. **Separate finding:** ADR 0008 bubblewrap 0.11.0 affected by GHSA-pxhw-h44j-8pfx / CVE-2026-87766 (version-affected, profile-mitigated, no known escalation) — registered as #80, remediation outside this PR. **Next action to unblock #53:** owner reviews/merges PR #81 under its own authority; then the #53 integration work item can adopt the recorded boundary (multi-UID decision + real-harness closure proof remain its prerequisites). This research does NOT close #53, authorize live inference, or establish real-harness AC4 conformance. Standalone delivery does not merge; explicit owner `/loop` retains merge authority.
Author
Member

Integrated bounded research acceptance

Owner-authorized invocation kernel-loop-20261008T204521Z selected #78 by canonical unranked oldest-registration ordering (no priority override). PR #81 merged normally into develop at 3bcc650802de1f1beead9f8e5f579bb387c52573, parents approved base 19775b9679cf04f071e4fe5f2542fe230272ea36 and approved HEAD c576524a37bf4840622976385c42a1bfb3fb1f95; fetched canonical develop contains both. All 14 integrated delivery paths are byte-identical to the independently reviewed objects.

Preserved reviews 1/2; review 3 consumed (P3 findings and denied shell infrastructure); minimal evidence corrections committed normally as c576524: existence is not liveness, connection refusal is not enforcement, direct lo-only/empty IPv4-route assertions, precise unreceived clone-filter limitation. Review 4/10, fresh independent GLM-5.3 equivalent read-only native context, APPROVE with findings[] at exact HEAD/base. Sanitized make check (1405 PASS, 71 honest native skips, 81 subtests), package-check, audit and diff-check PASS. Full pinned OCI receipt 26 PASS, 0 failures/skips; independently rerun by review 4. Exact-head canonical CI #2394 SUCCESS: https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/144.

AC1-5 received by the integrated decision record, native matrix/evidence capture and planned existing-port integration: static containment, relay admission, non-revocable native writes, settlement and uncertainty remain distinct; missing real-harness/clone-filter/durable-broker guarantees named. AC6 gates/review received under the owner's current GLM-5.3 security-review override and explicit /loop integration authority. This closes bounded #78 research only. #53 AC4 is NOT complete; synthetic OCI proof is not real Codex executor conformance. No host-global UID/GID changes, live inference, product GO, main, release or deployment.

## Integrated bounded research acceptance Owner-authorized invocation `kernel-loop-20261008T204521Z` selected #78 by canonical unranked oldest-registration ordering (no priority override). PR #81 merged normally into develop at `3bcc650802de1f1beead9f8e5f579bb387c52573`, parents approved base `19775b9679cf04f071e4fe5f2542fe230272ea36` and approved HEAD `c576524a37bf4840622976385c42a1bfb3fb1f95`; fetched canonical develop contains both. All 14 integrated delivery paths are byte-identical to the independently reviewed objects. Preserved reviews 1/2; review 3 consumed (P3 findings and denied shell infrastructure); minimal evidence corrections committed normally as `c576524`: existence is not liveness, connection refusal is not enforcement, direct lo-only/empty IPv4-route assertions, precise unreceived clone-filter limitation. Review 4/10, fresh independent GLM-5.3 equivalent read-only native context, APPROVE with findings[] at exact HEAD/base. Sanitized make check (1405 PASS, 71 honest native skips, 81 subtests), package-check, audit and diff-check PASS. Full pinned OCI receipt 26 PASS, 0 failures/skips; independently rerun by review 4. Exact-head canonical CI #2394 SUCCESS: https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/144. AC1-5 received by the integrated decision record, native matrix/evidence capture and planned existing-port integration: static containment, relay admission, non-revocable native writes, settlement and uncertainty remain distinct; missing real-harness/clone-filter/durable-broker guarantees named. AC6 gates/review received under the owner's current GLM-5.3 security-review override and explicit /loop integration authority. This closes bounded #78 research only. #53 AC4 is NOT complete; synthetic OCI proof is not real Codex executor conformance. No host-global UID/GID changes, live inference, product GO, main, release or deployment.
kilo closed this issue 2026-10-08 21:36:08 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Creatidy/creatidy-kernel#78
No description provided.