fabro/docs/public/agents
Bryan Helmkamp b4fd7ae00b
fix(sandbox): materialize prompt blobs in runtime storage, not the checkout
Remote prompt-value materialization wrote demoted values to
{working_directory}/.fabro/blobs inside the repository checkout, so a
later checkpoint could commit them and leak them into the run pull
request.

Give each sandbox a run-scoped runtime directory outside the source
checkout as part of the Sandbox contract:

- Sandbox::runtime_directory() names the directory; host-local
  sandboxes return None because the engine owns a host-side runtime
  directory (RunScratch) for those runs.
- Docker creates /fabro/runtime at initialize with umask 077 and
  uploads runtime files with mode 0600.
- Daytona creates /home/daytona/fabro/runtime with mode 0700.
- Both remote materialization paths in fabro-workflow share one
  materialization-path helper built on the new contract. The paths keep
  the runtime/blobs suffix, so durable context still normalizes to
  blob://sha256/... references.
- Local materialization now writes owner-private directories and files
  on Unix.

Regression coverage: an integration test runs remote-style prompt
demotion against a real git checkout, then a real checkpoint commit,
and asserts the checkout stays clean, the agent-facing file is
readable, and a deleted materialized file is recreated from the
durable blob store. A real-Docker test verifies the runtime directory
and blob file permissions inside a container.

Fixes #798

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Kmn5jyrdpyCdvcfvmEDvA
2026-08-25 07:14:31 -04:00
..
hooks.mdx docs: clarify hook variable sensitivity 2026-07-28 18:04:54 -04:00
mcp.mdx Reuse PermissionLevel and fix stale run spec snapshots 2026-08-01 10:09:44 -04:00
outputs.mdx fix(sandbox): materialize prompt blobs in runtime storage, not the checkout 2026-08-25 07:14:31 -04:00
permissions.mdx fix(agent): remove the read-before-write guard 2026-07-25 14:53:38 -04:00
prompts.mdx docs: refresh product documentation 2026-08-24 09:53:09 -04:00
skills.mdx refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
subagents.mdx docs: refresh product documentation 2026-08-24 09:53:09 -04:00
tools.mdx refactor(search): select backend from available credentials 2026-08-21 20:09:52 -04:00