Skip to content

feat(core): confine crew workers' engine processes on macOS - #527

Merged
kinqsradio merged 4 commits into
mainfrom
feat/sandbox-crew-workers
Nov 12, 2026
Merged

kinqsradio merged 4 commits into
mainfrom
feat/sandbox-crew-workers

Conversation

@kinqsradio

Copy link
Copy Markdown
Member

Summary

  • On macOS a crew worker's engine process starts under a sandbox-exec profile that denies the data folder (store, service handle, other runs' files) except its own run folder, checkout and library, and denies inspecting other processes.
  • Where that cannot be applied (Windows/Linux, missing tool, Orbyn itself restricted, Codex, terminal engines) the worker is refused before it starts, via the existing "refused by the app" item.
  • Docs: SPEC section 11, architecture, crew, setup ("Crew runs on macOS in the beta; Windows later").
  • Not covered: network, loopback service, keychain, engine login/session folders. Closing the lead's transcript files is the next change.

Refs #441

Closes #

Parity rows

none

Frames built

Frames built: none

Testing

  • CI covers the rest.
  • macOS, real sandbox-exec: new host::confine tests and crew::tests::confined pass; orbynd confined_cli passes; full orbyn-core crew and driver filter passes (398 passed); clippy -D warnings clean.
  • Not tested: orbynd route tests (config line only; compiled by clippy), Windows run, real engines under the profile.

Co-authors

none

AI usage

  • Written by hand, with no AI
  • Harness and version: Claude Code 2.1.321
  • Models: claude-sonnet-5-5 (implementation), claude-opus-5-5 (design review)
  • Effort: medium
  • Human role: assigned the task and its boundaries; review pending
  • Sources: none

Checklist

  • Works on Windows and macOS
  • web/src/generated with any contract change; docs/architecture.md with any rule change
  • No copied source, secrets, credentials or personal data; no AI attribution in commits, title or branch

A crew worker runs as the person, so its shell could read the store and call the orbyn CLI. On macOS each worker's engine now starts under a fixed sandbox-exec profile that denies the data folder except the worker's own run folder, checkout and library. Where no restriction exists (other platforms, missing tool, nested restriction, Codex, terminal engines) the worker is refused before it starts.
@github-actions github-actions Bot added area: core crates/orbyn-core: runs, drivers, workspace, approvals, storage area: contracts crates/orbyn-contracts and web/src/generated area: service crates/orbynd: local service and CLI area: docs docs and Markdown files labels Nov 12, 2026
…orker

Deny lsopen and signals to other processes, refuse an allowance that contains the data folder, fail closed when the core is not bound, and state in the docs only what the tests prove.
…orker

Deny rename and removal of the data folder and every folder above it, let the route down to the worker's own folders be walked, and drop a stale doc line.
@kinqsradio
kinqsradio merged commit 32efec6 into main Nov 12, 2026
70 of 72 checks passed
@kinqsradio
kinqsradio deleted the feat/sandbox-crew-workers branch November 12, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: contracts crates/orbyn-contracts and web/src/generated area: core crates/orbyn-core: runs, drivers, workspace, approvals, storage area: docs docs and Markdown files area: service crates/orbynd: local service and CLI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant