Documentation
¶
Overview ¶
Package agentenv names the environment variables through which an agent really installed on this machine reaches magpie: the one list a test sandbox clears, so that a test meets only the agents it put there itself.
A sandbox fakes magpie's own folders through HOME, USERPROFILE and the XDG variables (appdir decides those), and an agent's folder through the variable that agent's own CLI reads before it falls back to its folder in the home: CLAUDE_CONFIG_DIR, CODEX_HOME, QODER_CONFIG_DIR and the rest. Any one of them left over from the developer's shell points magpie at a real agent, whose sessions and settings a test then reads — and, where magpie writes what it wires, writes into (#522). Qoder's CLI sets both of its variables for every child it starts, and magpie manages Qoder, so writing magpie from inside Qoder was one way to meet this.
Each package keeps its own sandbox, because a test in internal/sessions cannot import internal/agent, which imports it, to ask which variables there are; this is the list they all clear. A name here is one magpie reads, and TestVarsAreRead says so, so a variable magpie stopped reading does not linger — that is how GEMINI_CLI_HOME and OPENCODE_CONFIG came to be cleared by a sandbox while OPENCODE_CONFIG_DIR, the one magpie reads, was not. What is deliberately not here: APPDATA and LOCALAPPDATA, Windows' folders rather than an agent's, which a sandbox sets to a folder of its own instead of clearing; and CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, a behaviour flag whose one test sets it on purpose to read what magpie then does.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ClaudeProviders = []string{
"CLAUDE_CODE_USE_BEDROCK", "CLAUDE_CODE_USE_VERTEX", "CLAUDE_CODE_USE_FOUNDRY",
"CLAUDE_CODE_USE_ANTHROPIC_AWS", "CLAUDE_CODE_USE_ANTHROPIC_GOOGLE_CLOUD", "CLAUDE_CODE_USE_MANTLE",
}
ClaudeProviders are Claude Code's switches that send its requests to a cloud's endpoint (Amazon Bedrock, Vertex AI, …) in place of ANTHROPIC_BASE_URL, so a Claude Code wired to magpie with one on never reaches it (jw1dev on X). The login shell is asked for them (proc.LoginEnv), for magpie to say when a terminal's Claude Code has one on, but they are never set in magpie's own environment, and a test's sandbox clears them. They are Claude Code 2.1.300's (Ie() in its bundle).
var NotPaths = map[string]bool{ "PI_PROFILE": true, "OMP_PROFILE": true, "WINDSURF_API_SERVER_URL": true, "ZCODE_CREDENTIAL_SECRET": true, "PI_CONFIG_DIR": true, "OPENCODE_DB": true, "STEPCODE_CONFIG_DIR": true, "MAGPIE_ZED_BIN": true, "MAGPIE_ZED_PROCESS_NAMES": true, }
NotPaths are the Vars that name no folder or file under the working folder: a profile's name, a server's address, a secret, or a name its agent puts under a folder of its own (PI_CONFIG_DIR under the home, OPENCODE_DB in OpenCode's data folder), which a relative value is meant for.
var Vars = []string{
"CLAUDE_CONFIG_DIR", "CODEX_HOME", "COPILOT_HOME",
"CLAUDE_CODE_TMPDIR",
"MAGPIE_ZED_BIN", "MAGPIE_ZED_CONFIG_DIR", "MAGPIE_ZED_PROCESS_NAMES",
"CODEX_SQLITE_HOME",
"GEMINI_CLI_HOME",
"CLINE_DIR", "CLINE_DATA_DIR", "CLINE_SESSION_DATA_DIR", "CLINE_MCP_SETTINGS_PATH",
"PI_CODING_AGENT_DIR", "PI_CODING_AGENT_SESSION_DIR", "PI_CONFIG_DIR", "PI_PROFILE",
"OMO_CODING_AGENT_DIR", "SENPI_CODING_AGENT_DIR",
"PRIME_AGENT_CODING_AGENT_DIR",
"STEP_CODING_AGENT_DIR", "STEPCODE_CONFIG_DIR",
"OMP_PROFILE",
"QODER_CONFIG_DIR", "QODERCN_CONFIG_DIR",
"GROK_HOME", "GROK_BIN_DIR",
"GROK_APP_HOME",
"KIMI_CODE_HOME", "KIMI_SHARE_DIR",
"QWEN_HOME",
"ANTE_HOME",
"ASTRBOT_ROOT",
"JCODE_HOME",
"MIMOCODE_HOME", "MINIMAX_DATA_DIR", "HANA_HOME", "HERMES_HOME", "DSH_HOME",
"WORKBUDDY_CONFIG_DIR", "CODEBUDDY_CONFIG_DIR",
"DEVECO_CONFIG_DIR",
"ALMA_DATA_DIR",
"REASONIX_HOME",
"REASONIX_STATE_HOME",
"PI_DESKTOP_DATA_DIR",
"MISTER_MORPH_CONFIG",
"T3CODE_HOME",
"ATOMCODE_HOME",
"SNOW_CONFIG_DIR",
"CURSOR_CONFIG_DIR", "CURSOR_DATA_DIR",
"OPENCODE_CONFIG_DIR", "OPENCODE_DB", "OPENCHAMBER_DATA_DIR",
"FACTORY_HOME_OVERRIDE", "WINDSURF_API_SERVER_URL", "ZCODE_CREDENTIAL_SECRET",
"NVM_DIR", "FNM_DIR",
"MISE_DATA_DIR", "ASDF_DIR",
"GOOGLE_APPLICATION_CREDENTIALS", "CLOUDSDK_CONFIG",
}
Vars are the variables, by the agent they belong to. A sandbox clears all of them, and sets back the ones its own fixtures need.
Functions ¶
This section is empty.
Types ¶
This section is empty.