Part of the Agent Sandbox & Evaluation epic (#192). Splits the credential half out of
#180 because it is the single highest-risk part of the sandbox.
Goal
No production secret ever reaches a sandbox. An agent under evaluation is, by
definition, running unvalidated instructions against tools — treat its credentials as
if the agent were hostile.
Today (grounded)
PrincipalLLMResolver / PrincipalSCMResolver resolve the triggering user's own
connectors, and job_runner.py forwards the matching provider key into the Job env.
That is exactly right for production and exactly wrong for a sandbox: an eval run would
execute with the user's real GitHub PAT and real LLM key against real orgs.
Tasks
Acceptance
Given a user with real GitHub and Anthropic connectors, creating a sandbox and invoking
it produces a Job whose env contains the sandbox-scoped LLM key and no SCM/cloud
credential, and the grant is audited.
Plan: docs/plans/agent-sandbox-evals/IMPLEMENTATION-PLAN.md §7
Part of the Agent Sandbox & Evaluation epic (#192). Splits the credential half out of
#180 because it is the single highest-risk part of the sandbox.
Goal
No production secret ever reaches a sandbox. An agent under evaluation is, by
definition, running unvalidated instructions against tools — treat its credentials as
if the agent were hostile.
Today (grounded)
PrincipalLLMResolver/PrincipalSCMResolverresolve the triggering user's ownconnectors, and
job_runner.pyforwards the matching provider key into the Job env.That is exactly right for production and exactly wrong for a sandbox: an eval run would
execute with the user's real GitHub PAT and real LLM key against real orgs.
Tasks
SandboxCredentialResolver— resolves the sandbox's own scoped credentials, neverthe principal's production connectors, unless the sandbox spec explicitly opts a
named connector in and the user confirms.
budget and attributed to the sandbox, not the user's production spend.
gets a scoped test-org token, not the user's PAT.
production GCP service accounts.
production connector.
Acceptance
Given a user with real GitHub and Anthropic connectors, creating a sandbox and invoking
it produces a Job whose env contains the sandbox-scoped LLM key and no SCM/cloud
credential, and the grant is audited.
Plan:
docs/plans/agent-sandbox-evals/IMPLEMENTATION-PLAN.md§7