id = "grok" name = "Grok Build" homepage = "https://github.com/xai-org/grok-build" description = "xAI's coding agent for the terminal." icon = "theSVG:grok/light" executables = ["grok"] [dotfiles] # $GROK_HOME, defaulting to ~/.grok. config.toml is the only hand-editable # file; the user-scoped hooks Grok honors come from ~/.claude/settings.json # via its Claude Code compatibility layer, so they belong to the claude-code # entry, not this one. paths = ["~/.grok/config.toml"] # trusted_folders.toml is a list of absolute paths this machine has approved, # which is machine state rather than configuration, so it is excluded whole # instead of being carved up with machine_lines. exclude = [ "~/.grok/sessions/", "~/.grok/logs/", "~/.grok/bin/", "~/.grok/bundled/", "~/.grok/docs/", "~/.grok/downloads/", "~/.grok/completions/", "~/.grok/relocations/", "~/.grok/memtrace/", "~/.grok/marketplace-cache/", "~/.grok/hooks/", "~/.grok/trusted_folders.toml", "~/.grok/active_sessions.json", "~/.grok/models_cache.json", "~/.grok/worktrees.db", "~/.grok/agent_id", "~/.grok/version.json", "~/.grok/tip_cursor.json", "~/.grok/CHANGELOG.json", "~/.grok/CHANGELOG.md", "~/.grok/README.md", "~/.grok/*.lock", "~/.grok/.metadata_version", ] secret = ["~/.grok/auth.json"] # No machine_lines: config.toml holds the installer name, git integration and # marketplace sources, all of which are the same on every machine. The # machine-specific state is trusted_folders.toml, excluded above. [commands] format = 1 label = "Run Grok" description = "Start the Grok Build TUI with an initial prompt, or run a single headless prompt. Sub-commands (login, mcp, plugin, sessions ...), resume/worktree options and rule lists are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "help" revision = "grok --help (local install) 2026-10-27" evidence = ''' Usage: grok [OPTIONS] [PROMPT] [COMMAND] [PROMPT] Initial prompt for the interactive session, e.g. `grok "fix the bug"` or `grok --worktree=feat "create this feature"` --always-approve Auto-approve all tool executions -c, --continue Continue the most recent session for the current working directory --cwd Working directory -m, --model Model ID to use --max-turns Maximum number of agent turns --no-alt-screen Run inline instead of using the terminal alternate screen --output-format Output format for headless mode Possible values: - plain - json - streaming-json: NDJSON: one ACP session update per line, the agent's native format - streaming-messages-json: NDJSON in the Anthropic Messages API wire format -p, --single Single-turn prompt. Prints the response to stdout and exits --permission-mode Permission mode [possible values: default, acceptEdits, auto, dontAsk, bypassPermissions, plan] --prompt-file Single-turn prompt from a file --reasoning-effort Reasoning effort for reasoning models [aliases: --effort] --rules Extra rules to append to the system prompt --disable-web-search Disable web search and web fetch tools ''' [[commands.field]] id = "prompt" label = "Initial prompt" description = "Opens the interactive session with this prompt." type = "string" position = 0 sources = ["help"] [[commands.field]] id = "single" label = "Single-turn prompt (headless)" description = "Print the response to stdout and exit instead of opening the TUI." type = "string" option = ["--single", "-p"] sources = ["help"] [[commands.field]] id = "prompt_file" label = "Prompt from file (headless)" type = "path" option = ["--prompt-file"] path = { kind = "file", role = "input", must_exist = true } sources = ["help"] [[commands.field]] id = "model" label = "Model" type = "string" option = ["--model", "-m"] sources = ["help"] [[commands.field]] id = "continue" label = "Continue most recent session" type = "boolean" option = ["--continue", "-c"] sources = ["help"] [[commands.field]] id = "cwd" label = "Working directory" type = "path" option = ["--cwd"] path = { kind = "directory", role = "input", must_exist = true } sources = ["help"] [[commands.field]] id = "output_format" label = "Output format (headless)" type = "enum" option = ["--output-format"] choices = [{ value = "plain", label = "Plain" }, { value = "json", label = "JSON" }, { value = "streaming-json", label = "Streaming JSON (ACP)" }, { value = "streaming-messages-json", label = "Streaming JSON (Messages API)" }] sources = ["help"] [[commands.field]] id = "permission_mode" label = "Permission mode" type = "enum" option = ["--permission-mode"] choices = [{ value = "default", label = "Default" }, { value = "acceptEdits", label = "Accept edits" }, { value = "auto", label = "Auto" }, { value = "dontAsk", label = "Don't ask" }, { value = "bypassPermissions", label = "Bypass permissions" }, { value = "plan", label = "Plan" }] sources = ["help"] [[commands.field]] id = "always_approve" label = "Auto-approve all tool executions" type = "boolean" option = ["--always-approve"] effect = "exec" sources = ["help"] [[commands.field]] id = "max_turns" label = "Maximum agent turns" type = "integer" option = ["--max-turns"] sources = ["help"] [[commands.field]] id = "reasoning_effort" label = "Reasoning effort" type = "string" option = ["--reasoning-effort", "--effort"] sources = ["help"] [[commands.field]] id = "rules" label = "Extra rules" description = "Appended to the system prompt." type = "string" option = ["--rules"] sources = ["help"] [[commands.field]] id = "no_alt_screen" label = "Run inline (no alternate screen)" type = "boolean" option = ["--no-alt-screen"] sources = ["help"] [[commands.field]] id = "disable_web_search" label = "Disable web search" type = "boolean" option = ["--disable-web-search"] sources = ["help"] [[commands.task]] id = "chat" label = "Interactive session" fields = ["prompt", "model", "cwd", "continue", "permission_mode"] required = [] [[commands.task]] id = "headless" label = "One-shot headless prompt" fields = ["single", "model", "cwd", "output_format", "max_turns", "permission_mode"] required = ["single"] [[commands.group]] id = "basic" label = "Basic" fields = ["prompt", "single", "model", "continue", "cwd", "permission_mode"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["prompt_file", "output_format", "always_approve", "max_turns", "reasoning_effort", "rules", "no_alt_screen", "disable_web_search"]