thetacog-mcp@2.61.0
CAUTION· install onlyPublisher claims: "Write the job down as a spec, and every change your AI agent makes is placed against it on a record the agent did not write: in lane, flagged, or a breach. Anyone can rerun it and get the same answer. Free and open source (MIT); the VS Code extension is T" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Install scripts ran; no agent task scenario for this bundle.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
GDD_USE_GEMINI_API_KEYTELEGRAM_BOT_TOKENConfiguration, not credentials: BOARD_REMOTE, CLAUDBRIDGE_URL, CLAUDE_CODE_ENTRYPOINT, CLAUDE_CODE_SESSION_ID, CLAUDE_PID, CLAUDE_SESSION_ID, CLAUDECODE, DEMO_TH_REC, DEVELOPER_DIR, DRIVE_PATH, DRIVER_PATH, KNOCKON_HISTORY, KNOCKON_ORPHANS, KNOCKON_ORPHANS_MAX, KNOCKON_REEF, LENS_SESSION_ID, LIB_144_PATH, LIB_20K_PATH, MEM_SETTLE_LOAD, MEM_SETTLE_SWAPINS, NODE_TEST_CONTEXT, NOTARY_BEARER, OLLAMA_HOST_URL, PMU_ONCHIP_MEMO, PMU_PRIMARY_LENS, PMU_WALK_TAPE, REWRITE_CLOUD_MODEL, REWRITE_CLOUD_TIMEOUT_MS, REWRITE_LOCAL_MODEL, REWRITE_LOCAL_TIMEOUT_MS, REWRITE_PORT, STEER_ASKS_LEDGER, STEER_RUNNER, SYSTEM_PATH, TAPE_GLOSSARY_PATH, TAPE_LOOKAHEAD, TAPE_PORT, TAPE_SESSIONS_DIR- Where it talks to
- no vendor host named in the codeAlso thetadriven.com, visualstudio.com, google.com, rustup.rs, ip-api.com, openxmlformats.org, telegram.org — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names thetadriven.com, visualstudio.com, google.com, rustup.rs, ip-api.com, openxmlformats.org, telegram.org as well as its own vendor. The guard injects GDD_USE_GEMINI_API_KEY, TELEGRAM_BOT_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; install scripts ran; no agent task scenario for this bundle) on 2026-11-14 and scored it 71/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Image alt text carrying instructions; Image alt text carrying instructions; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
IN_LANE — sealed, placed at sense-axis A, byte-identical every runFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Six seconds: the diff counter climbs to fourteen files in red — Steer it. — /steer typed, the agent line, then the Δ line placed and the Copy Run Summary doorFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// ALSO UNSET THE API KEY (2026-08-12). The Next dev server loads .env.local into process.env,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const r = await fetch(`https://api.telegram.org/bot${token}/sendPhoto`, { method: 'POST', body: form });Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.const merged = { ...readEnvFile(path.join(cwd, '.env.local')), ...env }; // the environment wins, as in every script that reads the fileFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# (which returns 400 INVALID_ARGUMENT when the key in .env.local isFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Where a need is read from: the caller's environment, then <cwd>/.env.local (the file every one of these scripts already reads atFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// it. The packaged console never saw the bug because nothing there reads .env.local — which isFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (missEnv.length) return { ok: false, line: `${door}: needs ${list(missEnv)} (in .env.local or the environment) — operator-only` };Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const mass = env && Array.isArray(env.raw_semantic_mass) ? [...env.raw_semantic_mass].reverse() : [];Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Prefers the PREBUILT daemon (ships for macOS Apple Silicon) so `npx thetacog-pmu-rust`Fix: Pin versions and sources; vendor anything fetched at install time.- ${SERVER} — the MCP server (stdio) and every door: \`node ${SERVER} <door>\` (\`npx thetacog-mcp <door>\` is the same).Fix: Pin versions and sources; vendor anything fetched at install time.echo " (driftPct > kill vs your README-as-spec) it counts ONE event, sensemakes the drift"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.echo " It NEVER blocks the push. Recompute any time: npx thetacog-mcp spec-drift"Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog verify-license --tape tape.json --authority <pubkey_hex> # pin the signerFix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp doctor [--json] [--print] [--no-llm] [--out <file>] [--skills-only] [--fix [--hosts claude-code,cursor,gemini]]Fix: Pin versions and sources; vendor anything fetched at install time.// packages/thetacog-mcp/bin/doctor.mjs — `npx thetacog-mcp doctor`: does everything this install needs actually run HERE?Fix: Pin versions and sources; vendor anything fetched at install time.…r.stdout || '').trim().split('\n').slice(-3).join(' | ').slice(0, 300)}`, 'run `npx thetacog-mcp attest-demo` by hand and read its last lines'); break; } } if (digests.length =…Fix: Pin versions and sources; vendor anything fetched at install time.# the `npx thetacog-mcp init-hooks` entrypoint) — the README-as-spec ADVISORY governor pre-push.Fix: Pin versions and sources; vendor anything fetched at install time.echo " Recompute: npx thetacog-mcp intervene · close the loop: npx thetacog-mcp intervene --verify"Fix: Pin versions and sources; vendor anything fetched at install time.…ignal}` : ''}): ${String(r.stderr || '').slice(0, 200)}`, ok ? '' : 'a deadline kill (SIGKILL) means a wedged pipe; anything else, read stderr above'); } } catch (…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// npx thetacog verify-license --tape tape.jsonFix: Pin versions and sources; vendor anything fetched at install time.cp "$src" "$dest"; chmod +x "$dest"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.// npx thetacog verify-license --tape tape.json --license lic_ab12…Fix: Pin versions and sources; vendor anything fetched at install time.d(' Feed it first: npx thetacog-mcp map-crawl [network]'),Fix: Pin versions and sources; vendor anything fetched at install time.// C2312: /doctor — `npx thetacog-mcp doctor`, every command an npx door, the same check the extension's 🩺 button runsFix: Pin versions and sources; vendor anything fetched at install time.// C2305: /licence-admin — the OPERATOR side (grant · issue-key · revoke-key · keyring · claim-links · the funnels), every command an npxFix: Pin versions and sources; vendor anything fetched at install time.// C2305: /licence — connect, buy, paste, status, sign and countersign, every command an npx door (the vsix's 🔑 pills, in the CLI)Fix: Pin versions and sources; vendor anything fetched at install time.b(' 1 npx thetacog-mcp attest-demo'),Fix: Pin versions and sources; vendor anything fetched at install time.b(' 2 npx thetacog-mcp my-pixel'),Fix: Pin versions and sources; vendor anything fetched at install time.// packages/thetacog-mcp/lib/door-needs.mjs — C2305: THE OPERATOR DOORS' PREFLIGHT (`npx thetacog-mcp grant|issue-key|…`).Fix: Pin versions and sources; vendor anything fetched at install time.…r. Free and open source (MIT); the VS Code extension is ThetaCog Steer. Try it: npx -y thetacog-mcp@latest (lists the Claude Code skills it installs, /steer first) or…Fix: Pin versions and sources; vendor anything fetched at install time.// cat tape.json | npx thetacog verify-licenseFix: Pin versions and sources; vendor anything fetched at install time.b(' 3 npx thetacog-mcp index'),Fix: Pin versions and sources; vendor anything fetched at install time."overview": "node -e \"import('./overview.js').then(m => console.log(JSON.stringify(m.computeOverview(), null, 2)))\"",Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// C2173: the STRANGER-SAFE /rewrite (every command the `npx thetacog-mcp rewrite` door, cloud tracks by default, dry-run); the homeFix: Pin versions and sources; vendor anything fetched at install time.// WHY THIS EXISTS: a stranger who typed the package's own name — `npx thetacog-mcp` — got aFix: Pin versions and sources; vendor anything fetched at install time."show-overview": "node -e \"import('./overview.js').then(m => console.log(JSON.stringify(m.computeOverview({ repoRoot: process.cwd() + '/../..' }), null, 2)))\"",Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// ships — every command a door (`npx thetacog-mcp <door>`), never a path on one machine (operator 2026-10-22: "yes, npm ships the strangerFix: Pin versions and sources; vendor anything fetched at install time.// THE AI GREEKS (operator 2026-08-13: "the npx install does not have it with the greeks"). TheFix: Pin versions and sources; vendor anything fetched at install time.if (sf && sf.folded) console.log(`${new Date().toISOString()} mem: stages fold put ${sf.folded} run/cell receipts (${Math.round(sf.bytes / 1e6)} MB) on tapes · ${sf.eligible - sf.folded} left`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// operator 2026-10-19: "can you use /mem to kill all tabs safari too when they exceed 80% of cpu? or what is a reasonableFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// --csv <dir> also write each tab as <dir>/<tab>.csv (Drive converts a CSV upload into a native Google Sheet,Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…out, `${REMOTE}:${DRIVE_PATH}.xlsx`, '--drive-import-formats', 'xlsx']); console.log(r.ok ? `drive: uploaded → ${REMOTE}:${DRIVE_PATH} (converted to a Google Sheet)` : `drive: upload failed — ${r.why}`); } } console.log(`board → ${out.repl…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.'spec-drift-check.mjs', // README-as-spec advisory governor (npx thetacog-mcp spec-drift)Fix: Pin versions and sources; vendor anything fetched at install time.// the PROMPT altitude — the lens receipt (σ + placement + reef-named coordinate) so npx ships theFix: Pin versions and sources; vendor anything fetched at install time.// the walk's rides per row (data/vna/horizon-walk.json, written by horizon-walk.mjs; read, never recomputed here)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(`🔍 Verifying ${a.receipt} — recomputed on this machine, trusting nothing:\n`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// kill -0 succeeding on a recycled pid is not liveness, so the process's command line mustFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// XCODE, BY DEFAULT (operator 2026-10-10: "kill xcode by default with it"). Measured that day: the IDE openFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// • the prebuilt Rust daemon if present (same-arch convenience; else `npx thetacog-pmu-rust` builds it)Fix: Pin versions and sources; vendor anything fetched at install time.// the PROJECT altitude — the whole-repo insurability rollup (npx thetacog-mcp portfolio). Reads theFix: Pin versions and sources; vendor anything fetched at install time.// · Every kill is one row in .thetacog/mem-reaps.ndjson (AXIOM 1: a kill is a displacement).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if (cf && cf.folded) console.log(`${new Date().toISOString()} mem: cache fold put ${cf.folded} per-run files (${Math.round(cf.bytes / 1e6)} MB) on tapes · ${cf.eligible - cf.folded} left`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.if (!ready.ok) console.log(`drive: not uploaded — ${ready.why}`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// operator 2026-10-12: "kill finder" — Finder relaunches with its windows; killall is the documented reset.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// scripts/pmu/claim.mjs — C1158, THE HOLDER'S SIDE OF A CLAIM: `npx thetacog-mcp claim <commit-ref> [--out file.json]`.Fix: Pin versions and sources; vendor anything fetched at install time.…uit (?:breaks|breaker)\b|\bdead[- ]?man'?s switch\b/i, corrected: 'brake: a kill switch / emergency brake is never ours. Tape, not brake, not engine: the tape is…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// npx thetacog-mcp hooper --json # machine-readableFix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp my-pixel [--file README.md --file docs/x.md ...]Fix: Pin versions and sources; vendor anything fetched at install time.'The available precaution: `npx thetacog`. Not a future product — installed and running now.',Fix: Pin versions and sources; vendor anything fetched at install time.// Registered as `npx thetacog-mcp e0` (server.js command registry) — the harness-law door.Fix: Pin versions and sources; vendor anything fetched at install time.// scripts/pmu/lens-run.mjs — `npx thetacog-mcp lens-run "<prompt>" [--ideal <domain>]`: run ONE promptFix: Pin versions and sources; vendor anything fetched at install time.// Run: node scripts/pmu/lens-e0.mjs · npx thetacog-mcp e0Fix: Pin versions and sources; vendor anything fetched at install time.console.log(`knock-on revert: amputated "${r.child_name}" · reef ${r.reef_sha_before} → ${r.reef_sha_after}`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.error('usage: npx thetacog-mcp claim <commit-ref> [--out file.json] [--repo <path>]');Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp prove # the fast chain (~15s): calibration · same-bytes · your-repoFix: Pin versions and sources; vendor anything fetched at install time.Reproduce it yourself: <code>npx thetacog-mcp hooper</code> · <code>npx thetacog-mcp prove-rice</code> · <code>npx thetacog-mcp attest verify …</code><br>Fix: Pin versions and sources; vendor anything fetched at install time.recompute: 'npx thetacog-mcp my-pixel' + used.map((f) => ' --file ' + f).join(''),Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp hooper # run the ledger, print PASS/FAILFix: Pin versions and sources; vendor anything fetched at install time.console.log(' Nobody granted this; nobody can revoke it. They can only recompute it: ' + entry.recompute);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// npx thetacog-mcp hooper --report r.html # also write a self-contained HTML reportFix: Pin versions and sources; vendor anything fetched at install time.line('══════════════ npx thetacog-mcp prove — the first-run self-proof ══════════════');Fix: Pin versions and sources; vendor anything fetched at install time.live('deeper: npx thetacog-mcp attest-demo (the 7-pillar walkthrough) · pmu-verify (the sealed self-audit) · thetadriven.com/pixel');Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp prove --full # also chains the complete attest-demo walkthroughFix: Pin versions and sources; vendor anything fetched at install time.L.push(` then \`npx thetacog-mcp walk\` again — the reading turns WITHIN or OUTSIDE(guard C1) on the next commit that touches those paths`);Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp replay --since <ref> [--to <ref>] [--spec <file>] [--repo <path>] [--rows-at <ref>] [--no-guards] [--json]Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp pmu-demo --file path/to/doc # read from fileFix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp pmu-demo --text "..." # inline textFix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp sense --runs 3 # K gate runs for the decidability assertion (default 3)Fix: Pin versions and sources; vendor anything fetched at install time.// scripts/pmu/replay.mjs — C99d THE REPLAY IS A DOOR, NOT A DEFENCE: `npx thetacog-mcp replay --since <ref>` (2026-09-19).Fix: Pin versions and sources; vendor anything fetched at install time.// axis-library-v1.json into the npm package so `npx thetacog-mcp pmu-demo`Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp pmu-demo # built-in sample textFix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp walk [--since <ref>] [--spec <file>] [--repo <path>] [--no-guards] [--json]Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp sense # the whole machine, ~30-90s, terminal-onlyFix: Pin versions and sources; vendor anything fetched at install time.const why = absent ? `binary absent — no pmu-onchip at ${binAbs} (the prebuilt ships for macOS arm64; \`npx thetacog-pmu-rust --help\` builds it from the bundled source)`Fix: Pin versions and sources; vendor anything fetched at install time.// scripts/pmu/walk.mjs — C92d THE ONE-MINUTE DOOR: `npx thetacog-mcp walk` on the buyer's HEAD (2026-09-19).Fix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp sense --json # machine-readable trail of every live numberFix: Pin versions and sources; vendor anything fetched at install time.// C1391 — THE RECEIPT COMPARE. The README's "run it twice, the same bytes" (the `npx thetacog-mcp prove` line and theFix: Pin versions and sources; vendor anything fetched at install time.// npx thetacog-mcp pmu-report --no-open # don't auto-openFix: Pin versions and sources; vendor anything fetched at install time.console.log(` ${yellow(`curl -X POST -H 'content-type: application/json' \\`)}`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(C.dim('\n This is a decidable WHERE, computed with no model in the path. Off-lane is scope\n breadth, not defect — it says where the tape went, not whether going there was wrong.\n'));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// (<sha>.upload.json, written by uploadBackup) — its existence beside the archive IS the content-addressed check: the sameFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.if (!args.json) console.log(dim(` POSTing to: ${endpoint}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// echo "..." | npx thetacog-mcp pmu-demo --stdin # read from stdinFix: Pin versions and sources; vendor anything fetched at install time.…'--verify') + 1]; const v = await verifyBackup(sha); if (asJson) console.log(JSON.stringify(v)); else console.log(v.ok ? `backup ${sha.slice(0, 12)} · archive recomputes to its sha · ${v.files.length} entries verify · ${chainWord(v.manifes…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.# 2.58.3 and 2.59.0 shipped with `npx -y thetacog-mcp@latest attest-demo` throwing ENOENT on line 73,Fix: Pin versions and sources; vendor anything fetched at install time.…') args.open = false; else if (a === '--help' || a === '-h') { console.log(`\nthetacog pmu-report — full end-to-end HTML report\n\nUSAGE:\n npx thetacog-mcp pmu-report # built-in sample\n npx thetacog-mcp pmu-report --file path/to/doc # re…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…totalLeaves2} cells BLANK — map-of-maps gaps · the bundled <code>axis-library-v1.json</code> only carries depth-1; depth-2 snippets are generated per cohort/domain by <code>extractConcepts(input, opts)</code> + <code>expandCell(input, opts…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… console.log(`\nthetacog pmu-report — full end-to-end HTML report\n\nUSAGE:\n npx thetacog-mcp pmu-report # built-in sample\n npx thetacog-mcp pmu-repo…Fix: Pin versions and sources; vendor anything fetched at install time.// echo "..." | npx thetacog-mcp pmu-report --stdin # read from stdinFix: Pin versions and sources; vendor anything fetched at install time.// npm/npx builds PATH by PREPENDING each node_modules/.bin to whatever PATH it inherits. Inherit anFix: Pin versions and sources; vendor anything fetched at install time.…udes('--tapes') }); if (asJson) console.log(JSON.stringify(m)); else console.log(`backup ${m.sha.slice(0, 12)} · ${(m.bytes / 1048576).toFixed(1)} MB · ${m.files.length} files · ${m.source ? `source ${m.source.log} (${m.source.actor || 'un…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// npx thetacog-mcp pmu-report # built-in sampleFix: Pin versions and sources; vendor anything fetched at install time.console.log(dim(` ${bold('THROUGHPUT')} · three rates, three altitudes`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… walked before the store's first row)`); const o = share.original; console.log(`SETUP · ${o.MATCH}/${o.rows} walked rows recompute MATCH (${o.match_share ?? '—'}%) · ${o.MISMATCH} MISMATCH · ${o.UNMEASURED} UN…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…('--tapes') }); if (asJson) console.log(JSON.stringify(r)); else console.log(r.skipped ? `backup ${r.manifest.sha.slice(0, 12)} unchanged — already posted · ${r.url}` : r.ok ? `backup ${r.manifest.sha.slice(0, 12)} posted · ${r.url}` : `ba…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// npx thetacog-mcp pmu-report --file path/to/doc # read from fileFix: Pin versions and sources; vendor anything fetched at install time.…ocess.exit(2); } const s = spendOf(tp); if (argv.includes('--json')) console.log(JSON.stringify(s)); else { const tot = s.turns.reduce((a, t) => { a.calls += t.calls; for (const k of FIELDS) a[k] += t[k]; return a; }, zero()); console.log(…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…{ const p = appendPrediction({ label: l, tree: T, rowText: textOf(l) }); console.log(`${l} · ${p.status === 'predicted' ? `predicted ${p.predicted} (${p.band}) · ${JSON.stringify(p.inputs)}${p.appended ? '' : ' · already on record'}` : `UN…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.export const NO_SPEC_LINE = 'no spec yet at docs/specs/vna/SPEC-VNA-COCKPIT.md — `npx thetacog-mcp steer "<your ask>"` declares the first row';Fix: Pin versions and sources; vendor anything fetched at install time.const REPO = process.env.VNA_REPO || resolve(dirname(fileURLToPath(import.meta.url)), '../..'); // C94b: the repo being read — the caller's, when `npx thetacog-mcp <door>` runs elsewhereFix: Pin versions and sources; vendor anything fetched at install time.…such commit: ${sha}`); process.exit(2); } if (argv.includes('--json')) console.log(JSON.stringify(row)); else console.log(`${row.sha.slice(0, 10)} · cog ${row.cog} ${row.minted ? `· band ${row.band}` : `· not minted — ${row.why}`}\n inputs…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.const REPO = targetRepo(); // the repo being read — the caller's, when `npx thetacog-mcp <door>` runs elsewhereFix: Pin versions and sources; vendor anything fetched at install time.export function endModelClients(tags, { clients = () => ollamaClients(), kill = (pid) => process.kill(pid, 'SIGTERM') } = {}) {Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// ── C250 THE ENGINES PILL AND ITS END-ALL (operator 2026-09-24, on the 💬 Steer chat, verbatim: *"add a kill all running ollama andFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// C1016a THE FIRST /steer IN A REPO WITH NO SPEC (measured 2026-10-19 in a linux/amd64 node:20 container, the Replit shape: `npx thetacog-mcpFix: Pin versions and sources; vendor anything fetched at install time.// `npx thetacog-mcp steer-ui` → "not run — steer-ui: TypeError"). The walk still runs: HEAD's message isFix: Pin versions and sources; vendor anything fetched at install time.// `all` resolves against the fresh list, never against a pid the caller typed, so this door cannot kill anything else on the machine.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const REPO = process.env.VNA_REPO || resolve(dirname(fileURLToPath(import.meta.url)), '../..'); // C94b: the repo being read — the caller's, when `npx thetacog-mcp <door>` runs elsewhereFix: Pin versions and sources; vendor anything fetched at install time./** SIGTERM every client of the server; one row each. Injected: clients, kill */Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.… ? ', rates are the operator\'s estimate' : ''})`); for (const b of t) console.log(` ${b.band} n ${b.n} · peg ${f(b.peg_tokens_per_cog, ' tok/cog')} (${b.peg_route || '—'}) · h/cog chair ${f(b.chair_h_per_cog)} runner ${f(b.runner_h_per_co…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.<summary>direction override — when rewriting cannot fix it</summary> <div class="row"> <input id="dir" class="mono" style="flex:1;background:#05070a;border:1px Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.return { id: 'mcp:claude-code', status: 'FAIL', detail: 'no thetacog MCP server in .mcp.json or ~/.claude.json for this repo', fix: 'claude mcp add thetacog -- npx -y thetacog-mcp' };Fix: Pin versions and sources; vendor anything fetched at install time.…f.map((s) => `${s.path} ${s.state}`).join(' · '), fix: [fixable.length ? `npx thetacog-mcp doctor --fix${h.required ? '' : ` --hosts ${h.id}`} writes ${fixable.map((s) =>…Fix: Pin versions and sources; vendor anything fetched at install time.export async function endAllLocal({ ps = psText, kill = (pid, sig) => process.kill(pid, sig), alive = alivePid, fetchFn = globalThis.fetch, host = OLLAMA_HOST(),Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.npx thetacog-mcp lens-run "<prompt>" --ideal <domain> # run one prompt through the lens from the CLI — prints the readout, the retrieved rules, the template, and the domain matchFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.export const ATTEST_CMD = 'npx -y thetacog-mcp@latest attest-demo';Fix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
No advisories in OSV for thetacog-mcp@2.61.0 as of 3 h ago. This is the package itself, not its dependencies.
What would make this Verified
9 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim wiber: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden instructions≈ +6 on the totalRemove HTML comments, zero-width characters and white-on-white text that carry instructions. Everything the agent is meant to read should be visible to the person reading the file.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Telegram Bot API URL≈ +4 on the totalReplace encoded or assembled strings with plain literals and remove undeclared network calls.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.