Make AI coding agents safe to scale autonomously: assign work, cap spend, enforce policy, verify output, roll back failures, learn from loops, and prove ROI across every repo.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http
verified
reported
listed in the official MCP registry counts 12 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
martin_cancel
-
martin_continue
-
martin_doctor
-
martin_inspect
-
martin_list_runs
-
martin_logs
-
martin_pause
-
martin_plan
-
martin_preflight
-
martin_run
-
martin_status
-
martin_triage_runs
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 2f6da7e · analyzer v33 · 3h ago
skills & prompt files 3
danger signals1
- committed secret GitHub fine-grained PAT Keesan12-martin-loop-2f6da7e/packages/core/tests/leash.test.ts :392
github…(39 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 357
filesystem 166
- fs (weak) Keesan12-martin-loop-2f6da7e/benchmarks/src/eval.ts :1
import { access, mkdir, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/benchmarks/src/fixtures.ts :1
import { readFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/benchmarks/src/ralphy-stress-report.ts :1
import { access, mkdir, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/adapters/src/cli-bridge.ts :3
import { existsSync, readFileSync } from "node:fs"; - fs Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-host.ts :12
} from "node:fs"; - fs Keesan12-martin-loop-2f6da7e/packages/adapters/src/workspace-edit-protocol.ts :1
import { lstat, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/claude-cli.test.ts :7
import { mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/cli-bridge.test.ts :1
import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/codex-launcher.test.ts :1
import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible-workspace-edit.test.ts :4
import { mkdir, mkdtemp, readFile, rm, symlink, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible.test.ts :8
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/scripts/smoke-intake-live.mts :13
import { readFile, mkdir, rm } from "node:fs/promises";
show 28 more
- fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/scripts/verify-host-matrix-live.mjs :4
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/cli-milestone-state.ts :1
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :1
import { cp, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/mcp-config.ts :1
import { access, mkdir, readFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/mcp-install-state.ts :5
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/persistence.ts :1
import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/phase-command-center.ts :1
import { readFile, readdir, stat } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/remote-experience.ts :5
import fs from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/run-store.ts :2
import { open, readFile, readdir, stat } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-client.ts :42
import { mkdir, readdir, readFile, rename, rm, stat, writeFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-privacy.ts :2
import { readFile } from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/telemetry.ts :6
import fs from "node:fs/promises"; - fs Keesan12-martin-loop-2f6da7e/packages/cli/src/workflow-state.ts :6
import { mkdir, readFile, rename, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/auto-governance.test.ts :2
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-integration.test.ts :7
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state-intake.test.ts :14
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state.test.ts :10
import { readFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli.test.ts :2
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/corpus-intelligence.test.ts :6
import { mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/exit-signal-cli.test.ts :1
import { mkdir, mkdtemp, readFile, rm } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/mcp-config.test.ts :1
import { readFileSync } from "node:fs"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/mcp-install-state.test.ts :1
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/model-auto-selection.test.ts :3
import { readFileSync } from "node:fs"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/operator-commands.test.ts :2
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/persistence.test.ts :1
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/phase-command-center.test.ts :1
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/proof-surfaces-cli.test.ts :1
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/release-hardening.test.ts :21
import { readFileSync, existsSync } from "node:fs";
126 more not shown — this panel samples each group; the count above is the real total.
shell / exec 66
- shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/scripts/run-test-lane.mjs :1
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/claude-cli.ts :752
* Given a prompt string, returns the full argv array to pass to spawn(). - shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/cli-bridge.ts :1
import { spawn, type ChildProcess, type SpawnOptions } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-capabilities.ts :1
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-cli.ts :1
import { spawn } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/adapters/src/codex-host.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/claude-cli.test.ts :3
import type { ChildProcess, SpawnOptions } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/codex-cli.test.ts :3
import type { ChildProcess, SpawnOptions } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible-workspace-edit.test.ts :1
import { execFileSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/scripts/verify-host-matrix-live.mjs :7
import { spawn } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :6
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/cli/src/mcp-config.ts :4
import { spawn } from "node:child_process";
show 28 more
- shell Keesan12-martin-loop-2f6da7e/packages/cli/src/post-run-experience/renderer.ts :5
import { spawn } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/cli/src/update-prompt.ts :5
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/cli/src/ux.ts :161
import { exec } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-integration.test.ts :12
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state-intake.test.ts :13
import { spawn } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-client.test.ts :9
import { spawn } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/scripts/run-runtime-test-lane.mjs :1
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/core/src/grounding.ts :2
import { execFile } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/core/src/index.ts :1
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/core/src/rollback.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/grounding.test.ts :1
import { execFile } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/mission-store.test.ts :22
import { spawn } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/rollback-read-failure.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/rollback.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/core/tests/runtime.test.ts :1
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/mcp/mcpb/build-mcpb.mjs :4
import { execFileSync, spawn } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/build-package-lib.mjs :1
import { spawn } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/run-test-lane.mjs :1
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/smoke-package.mjs :3
import { spawn } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/scripts/smoke-published-package.mjs :3
import { spawn } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/mcp/src/tools/pr-tools.ts :1
import { spawnSync } from "node:child_process"; - shell Keesan12-martin-loop-2f6da7e/packages/mcp/src/tools/workflow-governance.ts :3
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/tests/mcp-tools.test.ts :2
import type { ChildProcess, SpawnOptions } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/tests/server-validation.test.ts :2
import type { ChildProcess, SpawnOptions } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/scripts/assert-clean-worktree.mjs :3
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/scripts/build-native.mjs :10
import { spawnSync } from "node:child_process"; - shell (weak) Keesan12-martin-loop-2f6da7e/scripts/cut-release-tags.mjs :2
import { execFileSync } from "node:child_process";
26 more not shown — this panel samples each group; the count above is the real total.
network 13
- net (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible-workspace-edit.test.ts :2
import { createServer, type IncomingMessage, type ServerResponse } from "node:http"; - net (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible.test.ts :6
import { createServer, type IncomingMessage, type ServerResponse } from "node:http"; - net Keesan12-martin-loop-2f6da7e/packages/cli/src/cli-milestone-state.ts :664
fetch(getIntakeUrl(), { - net Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :2134
// Settle the delivery fetch (already done or within 3s timeout) and - net Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-client.ts :761
const res = await fetch(url, { - net (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/cli-milestone-state-intake.test.ts :12
import { createServer } from "node:http"; - net (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-client.test.ts :8
import { createServer } from "node:http"; - net Keesan12-martin-loop-2f6da7e/packages/core/src/delivery/message-client.ts :39
const response = await fetch(endpoint, { - net Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :21
import { createServer as createHttpServer, type IncomingMessage, type Server as NodeHttpServer, type ServerResponse } from "node:http"; - net (weak) Keesan12-martin-loop-2f6da7e/packages/mcp/tests/server-validation.test.ts :558
const notFound = await fetch(`http://127.0.0.1:${handle.port}/wrong`, { method: "GET" }); - net (weak) Keesan12-martin-loop-2f6da7e/scripts/query-release-publication-state.mjs :11
const response = await fetch(url, { headers }); - net (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-infrastructure-retry.mjs :10
const response = await fetch(`https://api.github.com/repos/${repository}${path}`, { headers: { Accept: "application/vnd.github+json", Authorization: `Bearer ${token}`, "X-GitHub-Api-Version": "2022-11
show 1 more
- net (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-live-release.mjs :44
const response = await fetch(url, { headers: headersFor(url), redirect: "follow" });
secrets 10
- secrets Keesan12-martin-loop-2f6da7e/packages/adapters/src/claude-cli.ts :1332
...(process.env["ANTHROPIC_API_KEY"] ? ["--bare"] : ["--strict-mcp-config"]), - secrets (weak) Keesan12-martin-loop-2f6da7e/packages/adapters/tests/openai-compatible.test.ts :378
const previousApiKey = process.env.MARTIN_OPENAI_API_KEY; - secrets Keesan12-martin-loop-2f6da7e/packages/cli/src/index.ts :1823
if (process.env["MARTIN_TELEMETRY_ENDPOINT"] && process.env["MARTIN_API_TOKEN"]) { - secrets Keesan12-martin-loop-2f6da7e/packages/cli/src/sync-client.ts :821
const token = process.env["MARTIN_API_TOKEN"]?.trim(); - secrets (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-client.test.ts :179
delete process.env["MARTIN_API_TOKEN"]; - secrets (weak) Keesan12-martin-loop-2f6da7e/packages/cli/tests/sync-receipt-transport.test.ts :27
process.env["MARTIN_API_TOKEN"] = "test-token"; - secrets Keesan12-martin-loop-2f6da7e/packages/mcp/src/tools/doctor.ts :219
(process.env.MARTIN_OPENAI_API_KEY || process.env.MARTIN_OPENAI_BASE_URL) - secrets (weak) Keesan12-martin-loop-2f6da7e/scripts/query-release-publication-state.mjs :8
const token = process.env.GH_TOKEN; - secrets (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-infrastructure-retry.mjs :7
const token = process.env.GH_TOKEN; - secrets (weak) Keesan12-martin-loop-2f6da7e/scripts/verify-live-release.mjs :7
const githubToken = process.env.GITHUB_TOKEN ?? "";
tool registrations 12
- martin_run Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :937
- martin_inspect Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1021
- martin_status Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1047
- martin_doctor Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1087
- martin_plan Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1116
- martin_preflight Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1152
- martin_logs Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1241
- martin_pause Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1269
- martin_cancel Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1292
- martin_continue Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1315
- martin_list_runs Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1338
- martin_triage_runs Keesan12-martin-loop-2f6da7e/packages/mcp/src/server.ts :1368
install hooks 2
- prepack Keesan12-martin-loop-2f6da7e/package.json :82
pnpm build && node ./scripts/root-release-guard.mjs --pack - prepack Keesan12-martin-loop-2f6da7e/packages/mcp/package.json :62
pnpm build
declared dependencies 12
- @open-policy-agent/opa-wasm@^1.10.0
- @opentelemetry/api-logs@^0.214.0
- @opentelemetry/exporter-logs-otlp-http@^0.214.0
- @opentelemetry/resources@^2.6.1
- @opentelemetry/sdk-logs@^0.214.0
- @opentelemetry/semantic-conventions@^1.38.0
- ts-morph@^21.0.0
- @types/node@^22.13.10
- tsx@^4.19.3
- typescript@^5.8.2
- vite@^7.3.2
- vitest@^4.1.8
transport_posture 1
- network-listening, binds all interfaces, no auth detected Keesan12-martin-loop-2f6da7e/packages/mcp/tests/server-validation.test.ts :516
host: "0.0.0.0",