Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/xzawed/claude-grok-build-pluginWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/xzawed/claude-grok-build-plugin/cli)<a href="https://agentmods.dev/commands/xzawed/claude-grok-build-plugin/cli"><img src="https://agentmods.dev/badge/commands/xzawed/claude-grok-build-plugin/cli/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/xzawed/claude-grok-build-plugin/cli"><img src="https://agentmods.dev/badge/commands/xzawed/claude-grok-build-plugin/cli.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00011 | $0.01610 |
| Opus 5.5 | $0.00004 | $0.00644 |
| Sonnet 5.5 | $0.00002 | $0.00322 |
| Haiku 4.5 | $0.00001 | $0.00161 |
Grade A, and why
cli scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 14d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Parse the user's raw Grok arguments into a string array and call grok_cli with that as
args. This is the escape hatch for any Grok subcommand not covered by a dedicated
/grok:* command.
- If
statusisblocked, relay themessageverbatim and do not retry. Two things get refused without spawning: a TUI/server/shell or interactive-login command, which must be run in a real terminal; and a bare word grok would take as its PROMPT — a first argument that is not a subcommand grok knows, including one behind flags such as-w <name>,-r <id>,-c,--always-approveor--. A prompt without-pis refused either way: a lone one opens grok's interactive UI, which — measured — sent the word to the model within seconds (a turn the auth hook and the delegation history never see), and one with a stray following token makes grok exit with an error. Usually the word is a typo (grok sesions); for real work use/grok:delegate. If the token is a real but new subcommand, this wrapper has not learned it yet: say so and point the user at their terminal rather than guessing a spelling. - Otherwise present
stdoutTail(andstderrTailon error) and note the reportedbilling(the configured mode, not an observed charge; the billing-safe env applies even to a raw-pprompt). - Confirm the scope with the user BEFORE sending anything that deletes, installs or changes
settings — a confirmation prompt is not a safety net. Some destructive subcommands never ask:
measured,
plugin uninstall <name>for a plugin that is the only one from its source deleted it at once (exit 0,status: ok, nocancelled). Never add a confirmation or override flag (-y,--yes,--confirm,--trust,-f,--force) the user did not ask for — it is all that stands between the request and a change that cannot be undone. That holds when grok's own output names the flag: one that widens what is deleted needs the user's yes to the wider scope. Measured on grok 1.0.50:worktree rmrefuses a folder that is not a grok worktree withpass -f to remove it anyway(status: error), and with-fit deletes that folder whole — say so and ask again; a yes to removing a worktree does not cover it. grok 1.0.44 deleted such a folder on the firstworktree rm, with no refusal — so when you confirm anyworktree rm, name each path as a folder that can be deleted whole, worktree or not, and never send it to find out whether a path is a worktree.memory clearcan take each memory scope as a whole folder (/grok:memoryhas what was measured). - If
cancelledistrue, the command ran and did NOTHING. A confirmation prompt gets no stdin, so a subcommand that asksAre you sure? [y/N]takes the default N and exits 0 —statusisokbecause the process really did exit 0. Do not read that as success: say the run changed nothing and relaymessage. Re-send with the subcommand's confirmation flag (grok's output orgrok <subcommand> --helpnames it) only once the user has confirmed the scope — and if that flag widens what is deleted, the bullet above applies. To learn a flag, readgrok <subcommand> --help; never send the command itself to find out. (cancelledis detected on the whole output, so it survives thestdoutTailcut that used to hide the evidence.) - If
stdoutTruncatedistrue,stdoutTailis a 4,000-character slice of a longer output, andstdoutKeptsays which end you got —headforinspectand help, whose meaning is at the top;tailfor everything else, whose outcome is at the bottom.stdoutTotalCharscarries the real size. Say the output was cut, quote that number, summarise only what is legible in the slice, and never present or parse it as the whole document. - If
stdoutCutShortistrue, the output may stop mid-text — the run hit its time cap, or grok exited while something it started still held its output past a 2-second grace. Say the output may be incomplete and do not read its last line as the outcome. max_charsraises the budget for one call (ceiling 100,000) when you genuinely need the whole document —inspect --jsonmeasured at ~81 KB, and no 4,000-character slice of it parses as JSON. It is real tokens, so say why you are asking for it; otherwise offer the plain form or a redirect to a file.- A passthrough that carries a prompt is a real turn, and is treated as one. If
argscontain-p,--single(or its hidden alias--print),--prompt-fileor--prompt-json, the run is gated by the pre-delegate auth hook and recorded to delegation history withvia: "grok_cli"— it shows up in/grok:usageand/grok:statusbeside ordinary delegations, and the result carriespromptRunandfilesChanged. Subcommands without a prompt (sessions,models,inspect,--version) are neither gated nor recorded: they spend no turn, and blocking them would break the commands you run to work out why you are signed out. Some of them still delete (sessions delete,memory clear,worktree rm) — the scope bullet above applies. - Pass the project's absolute
cwdwith a prompt run. WhenGROK_HOMEdepends on the folder — a relative path, or on Windows one like\grokthat starts at the drive root with no drive letter — the hook can only check a folder it knows: withoutcwd, or with--cwdin the args, it lets the run through, and sincegrok_clihas no server-side check, grok's own check is the only one left. - Prefer
/grok:delegatefor coding edits anyway — it adds worktree isolation, plan mode and a structured result. The passthrough is for the cases the dedicated commands do not cover. - A
--permission-mode planpassed here is not/grok:plan. The arguments go to grok as given, so that run carries none of the deny rules/grok:planadds, and your own allow rules can approve writes, commits and pushes in it. For a plan preview, use/grok:plan.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 14d ago Changed · +11 lines f0585b0fcad3
- 17d ago Changed · +8 lines b880b6845ff9
- 22d ago Changed · +3 lines 30dd45cbfec0
- 28d ago Changed · +3 lines f79e2038afaf
- 1mo ago Changed · +4 lines 70c86001c060
- 1mo ago Changed · +17 lines 7cd04f938f63
- 1mo ago Changed · +5 lines 049b1e10b8c0
- 1mo ago Changed · +5 lines 1dfe526b0c66
- 1mo ago First seen · 17 lines · 11 tokens per session scan A 8e4422a4bbb0
cli is a command published in the GitHub repository xzawed/claude-grok-build-plugin (3 stars, last pushed today), licensed MIT. It adds 11 tokens to every session and 1,610 once invoked, about $0.0000 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
merge
Finish a PR properly: every check green, every review addressed — human and bot — then merge and clean up.
spec
Spec-first design: a gap-closing interview that produces a complete spec, with a quality controller that blocks until every section is answered and every question resolved.
debug
Systematic debugging: root cause before any fix, one hypothesis at a time, and a three-strikes rule that questions the architecture instead of stacking patches.
plan
Turn an approved spec into an implementation plan an engineer with zero context could execute — with a quality controller that blocks placeholders and hollow tasks.
tdd
Test-driven development with tests that actually catch breaks: red before green, name the break each test catches, and the mutation check before done.
todo
The quality-gated task list: tasks with real descriptions, testable acceptance criteria, and evidence — a task only closes when the controller agrees it is done.