Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

VariableEffect
GROK_PATHPath to the grok binary
AGENTPACK_STAGING_ROOTOverride the staging root

See Environment Variables for the complete list.