Local background agents on Claude Code and Codex CLI — they message each other, wake on demand, and share one memory.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed v0.4.109 · analyzer v33 · 4w ago
danger signals1
- suspicious endpoint api.telegram.org package/src/connect/index.ts :114
const r = await fetch(`https://api.telegram.org/bot${token}/getMe`)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 98
filesystem 52
- fs package/src/approval/brokerClient.ts :13
import { readFileSync } from 'fs' - fs package/src/approval/install.ts :13
import { existsSync, mkdirSync, readFileSync, rmSync } from 'fs' - fs package/src/cli/index.ts :14
import { existsSync, readFileSync, renameSync, rmSync } from 'fs' - fs package/src/connect/index.ts :22
import { existsSync, readFileSync } from 'fs' - fs package/src/create/index.ts :23
import { existsSync, mkdirSync } from 'fs' - fs package/src/daemon/fleet.ts :37
import { closeSync, openSync, readSync, statSync } from 'fs' - fs package/src/daemon/goalwatch.ts :49
import { existsSync, readdirSync } from 'node:fs' - fs package/src/daemon/index.ts :25
import { chmodSync, existsSync, mkdirSync, unlinkSync } from 'fs' - fs package/src/daemon/main.ts :18
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs' - fs package/src/daemon/mutewatch.ts :76
import { existsSync, readdirSync, statSync } from 'node:fs' - fs package/src/daemon/profilesync.ts :30
import { statSync } from 'node:fs' - fs package/src/daemon/sessionfiles.ts :26
import { closeSync, fstatSync, openSync, readSync } from 'node:fs'
show 28 more
- fs package/src/daemon/turnwatch.ts :59
import { existsSync, readdirSync, statSync } from 'node:fs' - fs package/src/enable/index.ts :24
import { existsSync, readFileSync, realpathSync } from 'fs' - fs package/src/enable/provisionCommand.ts :20
import { accessSync, constants as FS } from 'fs' - fs package/src/identity/index.ts :9
import { existsSync, mkdirSync, readFileSync, realpathSync, rmdirSync, statSync } from 'fs' - fs package/src/identity/profileStandard.ts :24
import { existsSync, readFileSync } from 'fs' - fs package/src/init/index.ts :19
import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs' - fs package/src/install/index.ts :16
import { copyFileSync, cpSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from 'fs' - fs package/src/install/signing.ts :23
import { mkdtempSync, rmSync } from 'fs' - fs package/src/launch/adapters/claude.ts :25
import { readdirSync, realpathSync, statSync } from 'fs' - fs package/src/launch/adapters/codex.ts :44
import { readdirSync, realpathSync, statSync } from 'fs' - fs package/src/launch/adapters/transcriptTail.ts :10
import { openSync, readSync, closeSync, statSync } from 'fs' - fs package/src/launch/cmdlog.ts :41
} from 'fs' - fs package/src/launch/codexHooksTrust.ts :47
import { existsSync, mkdirSync, readFileSync, realpathSync } from 'fs' - fs package/src/launch/composeSystemPrompt.ts :11
import { readdirSync, readFileSync, statSync } from 'fs' - fs package/src/launch/index.ts :16
import { existsSync, mkdirSync, statSync } from 'fs' - fs package/src/launch/launchd.ts :16
import { accessSync, constants as FS, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'fs' - fs package/src/launch/nativeMemory.ts :23
import { existsSync, mkdirSync, readFileSync, realpathSync } from 'fs' - fs package/src/launch/ptyHost.ts :13
import { existsSync, readFileSync } from 'node:fs' - fs package/src/launch/readyGateModel.ts :8
import { closeSync, existsSync, fstatSync, openSync, readSync } from 'node:fs' - fs package/src/lifecycle/index.ts :15
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from 'fs' - fs package/src/lifecycle/queue.ts :24
import { linkSync, mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'fs' - fs package/src/onboard/index.ts :15
import { accessSync, constants as FS, existsSync, readFileSync } from 'fs' - fs package/src/registry/index.ts :12
import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from 'fs' - fs package/src/runtime/index.ts :24
import { existsSync, readFileSync } from 'fs' - fs package/src/runtime/update.ts :21
import { readdirSync } from 'fs' - fs package/src/status/index.ts :13
import { closeSync, openSync, readFileSync, statSync } from 'fs' - fs package/src/storage/atomicWrite.ts :9
import { closeSync, existsSync, fsyncSync, mkdirSync, openSync, renameSync, unlinkSync, writeSync } from 'node:fs' - fs package/src/storage/index.ts :13
import { existsSync, mkdirSync, readFileSync, readdirSync } from 'fs'
12 more not shown — this panel samples each group; the count above is the real total.
shell / exec 25
- shell package/src/cli/index.ts :13
import { spawnSync } from 'child_process' - shell package/src/connect/index.ts :24
import { spawnSync } from 'child_process' - shell package/src/daemon/index.ts :16
// Ф1 scope: route + deliver + liveness. Wake-on-miss / spawn (Ф2) are not wired - shell package/src/enable/index.ts :23
import { spawnSync } from 'child_process' - shell package/src/enable/provisionCommand.ts :19
import { spawnSync } from 'child_process' - shell package/src/install/index.ts :20
import { spawnSync } from 'child_process' - shell package/src/install/signing.ts :26
import { spawnSync } from 'child_process' - shell package/src/launch/launchd.ts :19
import { spawnSync } from 'child_process' - shell package/src/launch/ptyHost.ts :162
// paneLogStartByte = the pane-log size at THIS session's spawn (captured by launch before the - shell package/src/lifecycle/index.ts :18
import { spawnSync } from 'child_process' - shell package/src/onboard/index.ts :12
import { spawnSync } from 'child_process' - shell package/src/onboard/memory.ts :15
import { spawnSync } from 'child_process'
show 13 more
- shell package/src/onboard/steps.ts :14
import { spawnSync } from 'child_process' - shell package/src/onboard/voice.ts :21
import { spawnSync } from 'child_process' - shell package/src/runtime/deploy.ts :19
import { spawnSync } from 'child_process' - shell package/src/runtime/index.ts :23
import { spawnSync } from 'child_process' - shell package/src/runtime/update.ts :20
import { spawnSync } from 'child_process' - shell package/src/supervisor/daemon.ts :324
const child = Bun.spawn(CMD, { - shell package/src/supervisor/index.ts :7
import { spawn as nodeSpawn } from 'node:child_process' - shell package/src/supervisor/paths.ts :6
import { spawnSync } from 'node:child_process' - shell package/src/tray/install.ts :25
import { spawnSync } from 'child_process' - shell package/src/tui/dashboard/run.tsx :15
// - TUI↔TUI handoff = suspend-and-spawn (решение фазы, Требование-1): on attach the - shell package/src/tui/onboard/app.tsx :212
// Backend steps use synchronous spawnSync (launchctl, runtime plugin list) — - shell package/src/uninstall/index.ts :17
import { spawnSync } from 'child_process' - shell package/src/update/index.ts :31
import { spawnSync } from 'child_process'
network 9
- net package/src/approval/brokerClient.ts :56
/** Injectable fetch (tests). Default global fetch. */ - net package/src/approval/cli.ts :39
const resp = await fetch(`${base}/fleet/v1/approvals`, { headers: authHeaders(env) }) - net package/src/approval/hook.ts :156
/** Injectable fetch (tests). Default global fetch. */ - net package/src/connect/index.ts :114
const r = await fetch(`https://api.telegram.org/bot${token}/getMe`) - net package/src/daemon/fleet.ts :36
import type { IncomingMessage, ServerResponse } from 'http' - net package/src/daemon/index.ts :23
import { createServer as createHttpServer, type IncomingMessage, type ServerResponse } from 'http' - net package/src/supervisor/approvalRoute.ts :90
/** Injectable fetch (tests). */ - net package/src/tray/client.ts :132
res = await fetch(a.url, a.init as RequestInit) - net package/src/update/index.ts :33
import { connect } from 'net'
install hooks 1
- prepublishOnly package/package.json :57
test -z "$(git status --porcelain)" || (echo 'release: working tree is dirty — commit or stash before release' >&2 && exit 1)
declared dependencies 13
- @modelcontextprotocol/sdk@1.29.0
- @xterm/addon-serialize@0.14.0
- @xterm/headless@6.0.0
- ink@^7.1.0
- proper-lockfile@^4.1.2
- react@^19.2.7
- react-devtools-core@^7.0.1
- transliteration@^2.6.1
- @types/bun@latest
- @types/node@^22.0.0
- @types/proper-lockfile@^4.1.4
- @types/react@^19.2.17
show 1 more
- typescript@^5.6.0