W5 Infrastructure Diagnosis

Grok Chief of Staff: why it is more noise than signal

Four root causes, measured against the loop's own run receipts, the rebuild that shipped the same night, and why it was wound down anyway.

Generated 2026-08-19 by Woz. Sources: agents-runtime/memory/grok-cos-control/, agents-runtime/memory/herdr-cos-mcp/ledger.json, agents-runtime/scripts/grok-cos-control-loop.py, agents-runtime/logs/.

The verdict

Your instinct is right, and the reason is structural, not a tuning problem.

The Chief of Staff rebuilds its entire picture of your work from scratch every ten minutes by asking a language model to re-read everything and re-invent the list. Nothing carries a stable identity from one pass to the next, so nothing accumulates. Meanwhile the one thing it does act on, poking your agent panes to keep going, has a broken duplicate check, so it pokes the same stuck agent over and over.

Net effect over 167 runs: 3 useful writes, 95 pane pokes, and 79 throwaway planner tabs opened in your HerdR workspace. The useful output has no reader. The useless output has a megaphone.

The scoreboard

Every run of the loop writes a receipt. This is what 167 of them add up to.

3
Real task-sheet updates produced, total, across the whole life of the loop. They all happened in a single run.
receipt.json counts.master_actions, 115 receipts
95
Pokes sent into your live agent panes, 2026-08-17 to 2026-08-19.
receipt.json counts.herdr_followups, summed
79
Throwaway planner tabs opened in HerdR workspace w9, one per run.
receipt.json planner.tab_id, distinct
298
Different work-item IDs invented in one day, against a final ledger holding 18 work items.
26 plan.json files dated 2026-08-19; ledger.json work_items 18 at 23:02:41Z
72%
Of those IDs (215 of 298) appeared in exactly one run and never again.
same 26 plan.json files
31%
Of runs (52 of 167) crashed before producing a receipt.
runs/ dirs missing receipt.json
0
Downstream readers of the ledger it produces. The Morning Brief does not open it.
grep of scripts/morning-brief/, no matches
43 h
Since the "primary" native Grok route last dispatched any real work.
herdr-cos-mcp/ledger.json, last dispatch 2026-08-18T04:08:44Z

Root cause 1: the work list has no memory

STRUCTURAL

Every ten minutes it re-invents your entire task list from scratch

The loop hands a pile of evidence to Grok and asks for a work ledger back. It never says "here is the ledger you produced last time, update it." So Grok makes up fresh IDs each pass. The same real obligation shows up under a different name every time, which means status, follow-up dates, and history can never attach to anything.

The underlying sources barely moved all day: 59 task-sheet rows, 88 ClickUp tasks, 26 to 27 HerdR panes, constant across every run (receipt.json source_health). The output moved constantly.

The same real obligationRuns seenNamed as
Dad's Abbas PFS and K-1s for Brandon10 + 6gnty-abbas-pfs-k1s, gnty-abbas-pfs
HOUZN JE 14279 creator lookup10 + 6 + 1houzn-je-14279-creator, houzn-je14279-creator, houzn-je14279-audit-history
Magnus Health forms for Ace and Alara10 + 8magnus-health-packets, magnus-health-ace-alara
RiseSun FF&E open questions6 + 1 + 1 + 1 + 1risesun-ffe-wiring, risesun-ffe-factory, risesun-ffe-answers, risesun-ffe-remaining, risesun-factory-answers

Source: 26 plan.json files under memory/grok-cos-control/runs/control-20260819*, counted 2026-08-19.

The most stable item in the entire day, the HOUUS accent-wall check, held its identity in only 19 of 26 runs. The item count per run swung between 11 and 64 while the inputs sat still.

Root cause 2: the duplicate check does not work

CODE DEFECT

A six-hour cooldown that never fires

The loop is allowed to nudge a stalled agent, with a six-hour rule against nudging the same one twice. The rule is keyed on a fingerprint of the message text:

# agents-runtime/scripts/grok-cos-control-loop.py:807
key = hashlib.sha256(f"{action['pane_id']}\n{wire_message}".encode()).hexdigest()

The message is free text written fresh by Grok on every pass. It is never byte-identical twice, so the fingerprint never matches, so the cooldown never triggers. On 2026-08-19 all 24 delivered nudges carried a unique fingerprint and zero were suppressed (state.json followups, entries dated 2026-08-19).

PaneNudgesWhat it was doing
w9:pS15most-nudged pane of the three days
w3:p3E10waiting on you to open a HOUZN QuickBooks session
w3:p437waiting on your decision
w3:p4A6waiting on your decision
w3:p695waiting on your answer about who opens a login link

Source: plan.json actions of type herdr_follow_up across all 167 runs. Pane w3:p69 was nudged four times in 44 minutes (runs 21:43:09Z, 21:57:42Z, 22:12:29Z, 22:27:24Z on 2026-08-19).

Root cause 3: it nudges agents that are blocked on you

DESIGN FLAW

A perfect closed loop that produces nothing

An agent stops because it needs something only you can give: a QuickBooks login, a deploy authorization, an answer. The loop sees a stalled pane and pokes it. The agent restates its blocker. The next pass reads that restatement as fresh evidence, regenerates the same interrupt, and pokes again fifteen minutes later.

The actual nudge text shows the loop knows it is futile. Verbatim, two consecutive pokes to the same pane:

21:57Z  "Stay blocked on the view-as interview... Restate the
        unanswered question: who must be able to open the link."

22:12Z  "While MFA and who-opens-the-link wait on Ace, inventory
        the THM access-control e2e noise..."

Across 26 planning runs on 2026-08-19 the loop emitted 66 items marked as needing you, carrying 61 distinct wordings. It asked you to open the HOUZN audit history five times in five different sentences. Nothing downstream can collapse that into one ask.

Source: plan.json ace_interrupts across 26 plans dated 2026-08-19: 66 items, 61 unique question strings.

Root cause 4: the output has no reader

MISSING WIRING

The one genuinely good artifact goes into a drawer nobody opens

The reconciled ledger is meant to feed Ops Morning and the Morning Brief quietly in the background. Nothing reads it. A search of the entire Morning Brief codebase for any reference to the Chief of Staff ledger returns no matches (agents-runtime/scripts/morning-brief/, searched 2026-08-19). This was flagged as owed after the 2026-08-16 duplicate-touchpoint incident and never built.

So the good half is invisible and the noisy half, agents waking up and talking in your HerdR panes, is the only part you experience. That is precisely the ratio you described.

Aggravating factor: two control planes have been running since this morning

The 2026-08-17 cutover switched the primary route to the native Grok bot and shut down three older background pollers. Those pollers were switched off for the session but left permanently enabled, so they were set to return on the next restart. The Mac Mini rebooted at 08:33 on 2026-08-19 (sysctl kern.boottime) and all three came back. The old loop resumed at 13:37Z and has been running alongside the native route ever since, which is the duplicate control plane the cutover explicitly warned against.

The native route, meanwhile, has dispatched nothing since 2026-08-18T04:08:44Z, 43 hours ago. It still authenticates and polls, it just has no work path (memory/herdr-cos-mcp/ledger.json, 8 dispatches, all dated 2026-08-17 and 2026-08-18).

Stopped tonight

What was rebuilt

Ace, 2026-08-19: "this is the last shot." Every fix below is deterministic code with a test that names the defect it pins, not a prompt tweak.

Shipped and verified the same night

How it ended

The rebuild worked. The product decision went the other way, and it was the right call.

Wound down 2026-08-20

Grok Bot lost to a surface Ace already owned.

Blink Shell over Tailscale attaches his iPhone and iPad to the same HerdR session his desktop uses, giving him every agent pane live. Verified 2026-08-20: Tailscale up, the Mini reachable at 100.77.44.93, session ace running, and his iPad already on the tailnet.

Against that, Grok Bot offered one comfort win (texting a bot instead of thumb-typing into a terminal) and one capability with no named workflow (a cloud browser that stays signed into SaaS), while holding GitHub, Gmail, Calendar, Drive, and ClickUp scopes on a beta product's shared cloud compute. Measured week-one yield was 3 task-sheet writes across 167 runs.

Nobody established that the thing wanted was a phone surface, and nobody checked whether one already existed, before a control plane was built for it. That is the actual root cause, and no code change addresses it.

Taken down, verified

Six jobs stopped and permanently disabled, so a reboot cannot restore them: two MCP services, two OAuth gateways, two Cloudflare tunnels. Confirmed after: zero residual processes, all four service ports free, and both public hostnames returning 530 with no origin. Nothing deleted, restore is one command loop recorded in the vault.

Deliberately kept

The local control loop still runs twice daily at 05:40 and 14:00. It is not the bot. It drives its planner through the Grok CLI subscription route, verified working on the downgraded $30 plan, and neither it nor the Morning Brief references any retired port, hostname, or service. Its one job now is putting real decisions into the 06:10 Morning Brief.

It is on probation, not permanent. One test, one week: if the "Waiting on you" block is not something Ace acts on, it comes out too and the stack carries zero Grok pieces.

The one that got away from me

An hour after writing "name the gap and verify it is real against what is already running, before building transport for it" into the vault, I proposed wiring a Discord phone buzz for a gap I had invented rather than one Ace named. He caught it: "do we need this? or are you just creating more noise?" He was right. He already has a daily push, the 06:10 brief, and a second notification surface is the exact duplicate touchpoint this system's own charter forbids. Rejected and recorded so no future session revives it. Writing the lesson down did not prevent repeating it one turn later. The check that catches it is asking who named the gap.