Grok
agentpack grok launches the Grok CLI with a redirected home. The installed grok 0.1.219 rejects --plugin-dir and --settings, so agentpack configures it through GROK_HOME and a staged config.toml instead.
What the launcher does
GROK_HOME="$AGENTPACK_HOME/projects/<project-hash>/grok-homes/<mode>/<generation>" grok --cwd <workspace-root>
agentpack injects --cwd when you don’t supply it. Extra arguments are forwarded:
agentpack grok
agentpack --yolo grok # adds --always-approve
The project home is seeded from your real ~/.grok/ (config.toml, skills, agents, commands, plugins) so user config keeps working. Grok credentials are copied into $AGENTPACK_HOME/shared/grok/ after each launch and loaded into every project home before the next launch. Existing ~/.grok credentials and credentials from older agentpack project homes are imported on first use. Grok can replace credential files while refreshing tokens, so a file link alone would not keep them shared.
Grok session transcripts are durable too: staged sessions/ links to ~/.grok/sessions/. This makes agentpack and direct Grok launches share the same resume history across staging rebuilds and machine restarts. On upgrade, surviving session files from old staging modes are imported without overwriting native files; collisions are saved under $AGENTPACK_HOME/recovery/session-history/grok/.
Layout
projects/<project-hash>/grok-homes/<mode>/<generation>/
config.toml # seeded + [plugins].paths + [mcp_servers] + attribution guidance
auth.json # synchronized with shared/grok/auth.json
sessions/ -> ~/.grok/sessions/
<staging>/modes/<generation>/grok/
agentpack-bundle/
plugin.json
commands/ agents/ skills/ rules/
Pack content is rendered into grok/agentpack-bundle/ with a root plugin.json. The staged home links that bundle at plugins/agentpack-bundle and lists agentpack-bundle in [plugins].enabled. Grok trusts plugins in its home plugins/ directory, but it only registers their skills when the plugin is named in [plugins].enabled. A [plugins].paths entry stays disabled and does not register skills. MCP servers are written as Grok-native [mcp_servers] TOML in config.toml.
Hooks are not translated
Observed on 2026-10-12 with Grok 1.0.44: a package’s hooks/hooks.json is copied unchanged into the staged bundle, and a UserPromptSubmit command hook in it fired in non-interactive mode. agentpack does not translate or wrap hooks for Grok, so the notes below, written for Grok 0.2.14, describe what it cannot guarantee.
This is a deliberate limitation, not an omission. Grok’s hooks.json format is Claude-compatible, but grok inspect --json confirms it reads hooks only from the real ~/.grok/hooks — a redirected GROK_HOME is honored for config.toml and MCP but not for hook discovery. Bundle hooks loaded via [plugins].paths come up disabled (they need interactive trust), and grok plugin install --trust writes into the real ~/.grok (pollution). With no isolated, headless path available, Grok’s hook support stays unsupported.
Because Grok also reads Claude-compatible user sources from your real ~/.claude, agentpack’s collision check accounts for both ~/.grok and ~/.claude when removing pack copies that would shadow a user install.
Attribution
grok 0.1.219 has no verified first-class attribution-off setting. agentpack stages prompt-level guidance (AGENTS.md in the staged home) and does not modify your real Grok configuration; Grok writes session state through the durable ~/.grok/sessions/ link.
Environment
| Variable | Effect |
|---|---|
GROK_PATH | Path to the grok binary |
AGENTPACK_STAGING_ROOT | Override the staging root |
See Environment Variables for the complete list.