---
name: gh-builtin-jq-masks-missing-shell-jq
description: "gh's --jq is a BUILT-IN engine — it works on a box with no jq.exe, so every gh query succeeds while a bare `| jq` monitor dies silently on all polls; arm instruments with a first-cycle ARMED line"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: a3706588-b8ab-4625-b18e-e9ee47c1c9f0
  modified: 2026-08-25T00:31:21.686Z
---

Deployah's run monitor for golden 32790838399 (2026-08-24) was DEAD from the moment he armed it — `jq: command not found` on all 84 polls — and a silent monitor is byte-identical to a quiet run, so the silence would have read as "still going". Surfaced only because he checked the instrument instead of trusting its silence.

**Why:** `gh --json ... --jq` uses gh's BUILT-IN gojq engine and works on a box with no `jq` binary, while `| jq` in the same shell needs the real executable. One tool name, two engines — and the WORKING one masks the MISSING one: every interactive gh query you sanity-check with succeeds, so the monitor's pipeline looks proven when its jq leg never ran once. Same family as [[background-task-output-not-evidence-until-completion]] (an empty output file is not a quiet subject) and [[exit-status-after-a-truncation-pipe-measures-the-truncator]] (the pipe element you added for convenience is the thing that fails).

**How to apply:** In monitors and background pollers, do JSON extraction with `gh --jq` (built-in, no external dep), never a bare `| jq`. Any long-lived instrument must emit a first-cycle ARMED/heartbeat line and you must SEE it before relying on the instrument — an instrument that has never produced output has never been proven live, and its silence carries no signal. Testimony (deployah, self-declared, 2026-08-24); mechanism verified against gh docs behavior, not reproduced locally.

**2nd face, doyle 2026-09-07 (W2 gate):** my own pre-clear CI Monitor piped `gh run view --json` into a bare `jq -r`; 26 polls, every one `jq: command not found`, zero events, and the post-clear me read the wake note's "a Monitor is armed and may have fired" as a live instrument until I opened its output file. A watcher's output FILE is the first read after any clear, before trusting its silence. Use `gh --jq` (built-in engine) for every extraction; never a shell `| jq` on this box.
