Using Paqad with Gemini CLI

With Gemini CLI, Paqad records stage evidence and a verification result when the AI finishes each turn. It cannot block edits and shows no verdict in the chat; the result is only in the ledger.

  • AI tool adapters
  • Checked against paqad-ai 1.91.1
  • Reviewed 25 September 2026 by Eliyce

With Gemini CLI, Google's command-line coding agent, Paqad records evidence when the AI finishes each turn, but it cannot stop an edit and it shows no verdict in the chat. Onboarding writes GEMINI.md for the instructions and one hook in .gemini/settings.json. A hook is a moment when the tool runs an outside program; this one runs when the AI finishes its turn.

What Paqad can enforce in Gemini CLI

Gemini CLI is at the records at the end level. At the end of each turn, Paqad's hook:

  • reads the stage lines the AI wrote in its reply (lines of the form paqad:stage planning start) and records those stages in Paqad's evidence files, marked as coming from gemini-cli;
  • runs the same verification script used on Claude Code and Codex CLI, and writes the result to the ledger, Paqad's evidence files under .paqad/ledger/.

What it does not do:

  • It does not stop any edit. Gemini CLI gets no Paqad hook before edits, so the AI can change files without having loaded the framework or recorded a plan.
  • It does not show a verdict or ask the AI to keep working. The hook always finishes successfully and prints nothing. The result is only in the ledger.

Paqad keeps this hook silent on purpose. Gemini CLI reads a hook's output as instructions: it expects pure JSON and treats a refusal as a reason to retry. A verdict printed there would either halt the AI or need fragile special handling, so Paqad writes it to the ledger instead.

Because nothing speaks for it, the AI in Gemini CLI is instructed to announce its own stage lines and to state the end-of-change verdict in its reply. That part is the AI following instructions, and nothing checks that it does.

Files onboarding writes

FileWhat it is
GEMINI.mdThe entry file. It tells the AI to open .paqad/framework-path.txt and follow the installed framework, or to act as a normal assistant if Paqad is missing or off. An existing file keeps its text; Paqad's lines go in a marked block.
.gemini/settings.jsonGemini CLI's settings file, with one Paqad hook on the AfterAgent event. Other settings and hooks are kept.
.gemini/.gitignoreTells git to ignore settings.json and settings.hooks.json, because the hook command contains a path specific to your computer.
.gemini/settings.hooks.jsonA bookkeeping list of the hook files Paqad selected. Gemini CLI does not run it.
.gemini/mcp.jsonThe MCP servers Paqad suggests for your stack. It has no start commands, so it does not connect Gemini CLI to anything by itself.
.gemini/cache.json, .gemini/memory.jsonPaqad bookkeeping. Not Gemini CLI settings.

The hook Paqad adds

Gemini CLI eventPaqad scriptCan it stop work?
AfterAgent (the AI has finished its turn)verification-record.mjs gemini-cliNo. It records only.

Paqad adds no session-start hook here, so the automatic update check that runs on Claude Code and Codex CLI does not run from Gemini CLI.

Setting it up

  1. Run paqad-ai onboard --providers gemini-cli, or tick Gemini when onboarding asks.
  2. Start a new Gemini CLI session in the project.
  3. Ask each teammate to run paqad-ai join on their own machine, since .gemini/settings.json is ignored by git.
  4. After some work, look in .paqad/ledger/ to confirm that records are being written.

Limits to know

  • Nothing is blocked. Treat the ledger as a record of what happened, not a guarantee that the process was followed.
  • A stage the AI neither announces nor records with paqad-ai stage is missing from the ledger, and the verification result shows it as missing.
  • Gemini CLI has no Paqad stage helpers, so every stage runs in the same AI session.
  • Paqad can be switched off with paqad-ai disable or PAQAD_DISABLED=1. A finished turn is then logged as a disabled session.

If you need edits to be refused when the process is skipped, use Claude Code or Codex CLI.

Something on this page out of date or unclear? Open an issue on GitHub and name the page.