Skip to content

fix(agents): have the Sandbox manager set each Sandbox's profile and checkpoint location - #75

Merged
tee8z merged 1 commit into
mainfrom
feat/manager-sets-launch-env
Oct 22, 2026
Merged

tee8z merged 1 commit into
mainfrom
feat/manager-sets-launch-env

Conversation

@tee8z

@tee8z tee8z commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

What

On the relay path, nothing set four launch variables a Sandbox needs:

Variable Needed by
BUZZ_DEVELOPER_ID, BUZZ_DEVELOPER_PROFILE_ARN The image, to load the developer's profile. Without them it starts without their accounts.
BUZZ_CHECKPOINT_BUCKET, BUZZ_CHECKPOINT_PREFIX buzz-backend-kubernetes, which refuses a Sandbox deploy without checkpoint storage

The old direct path had developers paste these into the agent's Environment from the voltage-terraform output developer_workspaces.launch_env. On the relay path the app sends only the agent's own Environment, which is empty, so the first mention would fail with "Sandbox requires BUZZ_CHECKPOINT_BUCKET and BUZZ_CHECKPOINT_PREFIX…".

Fix

The Sandbox manager now sets all four on every request, from the signing owner's developer entry. A request cannot choose them.

Who sets it Settings
Developer, per agent Harness, model, effort (BUZZ_ACP_EFFORT_LEVEL), fast mode (BUZZ_ACP_FAST_MODE), instructions, environment
Sandbox manager BUZZ_DEVELOPER_ID, BUZZ_DEVELOPER_PROFILE_ARN, BUZZ_CHECKPOINT_BUCKET, BUZZ_CHECKPOINT_PREFIX = <id>/, plus the namespace and identity it already set
  • buzz-backend-kubernetes: Target::Managed gains env. confine writes it into the user tier: launch.env, or env_vars when the request has no launch block. Its keys replace the request's own; every other key, and the harness defaults tier (policy_env, where the model, effort and fast mode travel), is left as sent.
  • buzz-sandbox-reaper (manager):
    • the config gains a required checkpoint_bucket, checked as an S3 bucket name;
    • ManagerConfig::launch_env(developer) builds the four values;
    • every managed request carries them.

Tested

  • buzz-backend-kubernetes: 228 passed. The new managed_env_replaces_its_keys_and_keeps_the_rest covers:
    • the manager's values replacing a spoofed prefix and developer ID, in both user tiers;
    • the developer's ANTHROPIC_MODEL, BUZZ_ACP_EFFORT_LEVEL and BUZZ_ACP_FAST_MODE passing through.
  • buzz-sandbox-reaper: 90 passed. Covers the deploy target's env for the signing owner, plus a missing or invalid checkpoint_bucket refused.
  • buzz-backend-relay: 9 passed. Clippy is clean on all three.

Deploy

voltage-terraform adds checkpoint_bucket to sandbox-manager-config. Apply it together with the manager image from this change: the manager refuses unknown config fields, and the new image requires the new one.

Summary by CodeRabbit

  • New Features
    • Managed agent launches now receive the developer’s ID and profile information, along with a shared checkpoint bucket and a developer-specific checkpoint location.
    • Checkpoint settings are controlled by the manager and override values supplied in launch requests.
    • Manager configuration now requires a valid checkpoint bucket name.
  • Documentation
    • Updated remote-agent guidance to clarify that the manager controls profile and checkpoint locations.

…checkpoint location

On the relay path nothing set BUZZ_DEVELOPER_ID, BUZZ_DEVELOPER_PROFILE_ARN,
BUZZ_CHECKPOINT_BUCKET or BUZZ_CHECKPOINT_PREFIX: the direct path had
developers paste them into the agent's environment from a Terraform
output. A Sandbox deploy is refused without checkpoint storage, so the
first mention would fail, and without the profile variables the image
would start without the developer's accounts.

The managed target now carries launch environment that replaces the
request's values for its keys in the user tier. The manager config gains a
required checkpoint_bucket, and the manager sets the four keys from the
signing owner's developer entry on every request. The developer's
harness, model, effort and fast mode are untouched.
@coderabbitai

coderabbitai Bot commented Oct 22, 2026

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between 4c83433 and 4bc5742.

📒 Files selected for processing: 7
  • crates/buzz-backend-kubernetes/src/provider.rs
  • crates/buzz-sandbox-reaper/src/manager.rs
  • crates/buzz-sandbox-reaper/src/manager_tests.rs
  • crates/buzz-sandbox-reaper/src/relay_provider_tests.rs
  • crates/buzz-sandbox-reaper/src/serve_tests.rs
  • voltage/images/buzz-agent/README.md
  • voltage/remote-agents.md
+-------------------------------------------------+
| This code is so clever it forgot to be correct. |
+-------------------------------------------------+
  \
   \     /)/)
        ( '')
        /  |
      o(___)
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@tee8z tee8z self-assigned this Oct 22, 2026
@tee8z
tee8z requested a review from thebrandonlucas October 22, 2026 21:33
@tee8z
tee8z merged commit 5368cad into main Oct 22, 2026
59 of 60 checks passed
@tee8z
tee8z deleted the feat/manager-sets-launch-env branch October 22, 2026 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants