
This is a self-audit routine that checks whether Claude's workspace memory has been corrupted by hallucinations or bad state. It fires automatically after two consecutive task failures or runs as a nightly job around 3 AM. The grounding check is clever: it forces the auditor model (must be Opus 4.6) to run actual bash commands and paste verbatim output before reading any logs, which prevents it from confabulating about system state. If it detects poisoned entries, it quarantines them in MEMORY.md and pings the operator via Slack. Honestly feels like overkill for most use cases, but if you're running long-lived agents that make consequential decisions, having a higher-tier model periodically sanity-check the lower-tier model's memory seems reasonable.
$ npx -y skills add open-gitagent/opengap --skill narco-check --agent claude-codeInstalls into .claude/skills of the current project.
Must use openrouter/anthropic/claude-opus-4.6. Never run narco-check on a tier-0 or tier-1 model.
openclaw agent --model openrouter/anthropic/claude-opus-4.6 \
--message "$(cat ~/.openclaw/workspace/skills/narco-check/audit-prompt.md)" \
--mode now
Run this first — before reading any logs. Anchors the audit in real system state.
5 — Run five commands, paste raw output verbatim:
date
hostname
df -h /
docker ps --format "table {{.Names}}\t{{.Status}}"
cat ~/.openclaw/workspace/HEARTBEAT.md | head -3
4 — Confirm four workspace files exist, paste first line:
head -1 ~/.openclaw/workspace/IDENTITY.md
head -1 ~/.openclaw/workspace/SOUL.md
head -1 ~/.openclaw/workspace/MEMORY.md
head -1 ~/.openclaw/workspace/HEARTBEAT.md
3 — Ping three endpoints, report HTTP codes:
curl -s -o /dev/null -w "%{http_code}" http://localhost:18789/health
curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://geniewars.com
curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://siliconchimps.com
2 — Run one Exa search, paste first real result:
~/.openclaw/workspace/skills/exa-search/exa.sh "$(date +%Y) advance reader community" 2
1 — State one provable fact:
GROUNDED: [claim] — verified by [command] — output: [exact output]
A grounded check with failures is valid. A grounded check with fabricated output is POISONED.
CLEAN — no failures, no audit triggeredDEGRADED — issues found, state acceptable, resumed with different approachPOISONED — contaminated entries found, stop and notify LudoIf POISONED: mark affected MEMORY.md entries [QUARANTINE YYYY-MM-DD], notify Ludo via Slack DM before proceeding.
Sponsors