Environment variables¶
What quickstarted reads, and what the sandbox never sees.
Credentials¶
| Variable | Fallback | Used by |
|---|---|---|
QUICKSTARTED_ANTHROPIC_API_KEY |
ANTHROPIC_API_KEY |
--agent claude |
QUICKSTARTED_OPENAI_API_KEY |
OPENAI_API_KEY |
--agent openai |
QUICKSTARTED_GEMINI_API_KEY |
GOOGLE_API_KEY |
--agent gemini |
The prefixed name wins. It exists so a key can live in your shell without other
tooling on the same machine picking it up and spending it. Claude Code, for
example, offers to use any ANTHROPIC_API_KEY it finds, which silently moves
your usage from a subscription onto API billing.
The vendor names remain as a fallback because that is what CI secrets are conventionally called.
Keeping a key out of your shell entirely, on macOS:
security add-generic-password -a "$USER" -s quickstarted-anthropic -w
quickstarted() {
QUICKSTARTED_ANTHROPIC_API_KEY="$(security find-generic-password -a "$USER" -s quickstarted-anthropic -w)" \
command quickstarted "$@"
}
Configuration¶
| Variable | Meaning |
|---|---|
QUICKSTARTED_PRICES |
Path to a price book; --prices overrides it |
QUICKSTARTED_SANDBOX_DIR |
Parent directory for Docker workspaces |
QUICKSTARTED_SANDBOX_DIR¶
The docker backend bind-mounts a fresh workspace into the container, which
requires a host path the daemon can actually see. On Linux that is any path. On
macOS the daemon runs inside a VM with only some directories shared, so the
default there is ~/.quickstarted/sandboxes rather than the system temp
directory, which is not shared.
Set this if your daemon shares a different set of paths, or to put workspaces on a specific disk. The mount is verified at startup and the run is refused if it does not work in both directions, because a bind mount the daemon quietly redirects into the VM produces runs that pass while the host sees an empty workspace and cleanup frees nothing.
Test suite¶
| Variable | Meaning |
|---|---|
QUICKSTARTED_NETWORK_TESTS |
Set to run tests that reach the network |
What the sandbox receives¶
The executor builds the environment from scratch rather than filtering yours. Commands see exactly:
| Variable | Value |
|---|---|
PATH |
Inherited |
HOME |
The workspace |
TMPDIR |
A directory inside the workspace |
LANG, LC_ALL |
Inherited or en_US.UTF-8 |
TERM |
dumb |
NO_COLOR |
1 |
HTTP_PROXY, HTTPS_PROXY, ALL_PROXY |
The harness proxy, upper and lower case |
No API key is passed in, under any backend. A test asserts that neither
QUICKSTARTED_ANTHROPIC_API_KEY nor ANTHROPIC_API_KEY appears in the output
of env inside a sandbox.
Proxy variables are set for the sake of tools that read them, and enforcement does not depend on that. Under Docker the container has no route out except the sidecar; under Seatbelt the kernel denies every outbound connection except the proxy port.