Announcing Beacon: Self-improving memory for coding agents
← All skills
Skill

add-github

skill:nanocoai/nanoclaw#add-github

Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations.

Verdict
Suspicious

Risky behavior the analysis could not rule out.

Analyzed Oct 27, 2026, 21:44 UTC at acc2b1c

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

163
findings
critical
highest severity
9
threat classes
1,343
files scanned
5,786/6,065
checks satisfied
0
package advisories

Why this verdict

  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-codex/SKILL.md:39:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-codex/payload/container/agent-runner/src/provider-contracts/codex.ts:22:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.test.ts:67:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.ts:579:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.ts:8:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-discord/SKILL.md:18:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-github/SKILL.md:23:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-imessage/SKILL.md:49:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-imessage/docs.md:39:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-slack/SKILL.md:29:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-teams/SKILL.md:135:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-teams/SKILL.md:472:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:.claude/skills/add-telegram/SKILL.md:25:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:container/agent-runner/src/providers/claude-config.ts:100:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:container/agent-runner/src/providers/claude-config.ts:58:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:container/agent-runner/src/providers/claude-config.ts:94:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:container/agent-runner/src/providers/claude-history.ts:59:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:container/install-cli-tools.sh:19:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:container/install-cli-tools.sh:20:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:container/install-cli-tools.sh:28:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:container/pull.sh:185:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:container/pull.sh:275:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:docs/upgrade-recovery.md:26:HIJACK
  • suspicious: unverified finding skill:.claude/skills/add-github:docs/upgrade-recovery.md:26:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:docs/upgrade-recovery.md:26:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:scripts/photon-setup.ts:847:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:scripts/skill-apply.ts:1:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:scripts/update-skills.ts:162:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:scripts/update-skills.ts:225:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/auto.ts:1076:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/auto.ts:1740:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/auto.ts:726:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/auto.ts:757:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/auto.ts:836:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/channels/run-channel-skill.ts:88:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/channels/slack-auto.ts:14:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/channels/slack-auto.ts:213:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/channels/slack-auto.ts:213:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/container.ts:196:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/container.ts:233:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/container.ts:45:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-claude.sh:11:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-claude.sh:32:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-cred-helper.ts:12:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-cred-helper.ts:271:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-docker.sh:35:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-github.sh:6:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/install-node.sh:48:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/captured-token.ts:49:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/channels-remote.sh:40:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/claude-assist.ts:180:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/claude-assist.ts:228:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/claude-assist.ts:518:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/claude-handoff.ts:120:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/diagnostics.ts:2:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/diagnostics.ts:71:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/registry-state.ts:388:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/registry-state.ts:439:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/restart.sh:25:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/restart.sh:51:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/setup-commit.ts:63:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/setup-commit.ts:91:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/setup-commit.ts:91:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/skill-driver.ts:150:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/skill-driver.ts:233:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/skill-driver.ts:283:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/skill-driver.ts:464:MANIP
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/skill-driver.ts:470:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/lib/teams-manifest.ts:41:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/mounts.ts:82:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/pair-dial.ts:177:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/peer-cleanup.ts:83:DESTRUCT
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/platform.ts:60:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/portal.ts:419:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/portal.ts:55:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/providers/install.ts:156:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/providers/install.ts:89:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/providers/install.ts:94:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/register.ts:331:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:1016:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:1060:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:387:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:498:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:505:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:60:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:75:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-login.ts:787:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry-reconcile.ts:121:DESTRUCT
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry.ts:251:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry.ts:251:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry.ts:417:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry/credential-helper.mjs:120:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/registry/credential-helper.mjs:299:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/run-suggested.sh:35:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/run-suggested.sh:7:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/run-suggested.sh:8:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/service.ts:277:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/service.ts:352:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/service.ts:529:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/service.ts:545:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/service.ts:62:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/service.ts:727:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/signal-auth.ts:151:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/slack-worker.ts:32:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/slack-worker.ts:43:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/slack-worker.ts:91:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/timezone.ts:52:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/uninstall/flow.ts:121:DESTRUCT
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/uninstall/remove.ts:53:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/whatsapp-auth-version.ts:18:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:setup/whatsapp-auth.ts:191:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:src/channels/chat-sdk-bridge.ts:1245:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:src/channels/index.ts:6:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/community-portal/device-client.ts:254:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:src/community-portal/link.ts:249:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/community-portal/link.ts:249:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:src/community-portal/slack-job.ts:105:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/community-portal/slack-job.ts:110:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/community-portal/slack-job.ts:48:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/container-runner.ts:1135:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/container-runner.ts:1265:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/container-runner.ts:1627:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/container-runner.ts:1:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/delivery.ts:1:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/drivers/index.ts:105:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/drivers/index.ts:135:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/drivers/index.ts:68:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/mailbox/sqlite/tasks.ts:116:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/migrate-claude-memory-settings.ts:121:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/migrate-claude-memory-settings.ts:37:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/migrate-claude-memory-settings.ts:59:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/agent-to-agent/create-agent.ts:205:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/community-portal/runtime.ts:148:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/community-portal/runtime.ts:27:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/community-portal/runtime.ts:85:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/community-portal/runtime.ts:95:EXFIL
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/index.ts:13:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/index.ts:14:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/mount-security/index.ts:50:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/mount-security/index.ts:72:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/permissions/guard.ts:20:PRIVESC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/scheduling/create.ts:85:DESTRUCT
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/self-mod/apply.ts:56:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/self-mod/apply.ts:77:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/modules/self-mod/request.ts:13:EXEC
  • suspicious: unverified finding skill:.claude/skills/add-github:src/project-doc-compose.ts:249:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/project-doc-compose.ts:343:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/project-doc-compose.ts:85:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/provider-contracts/claude.ts:15:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/provider-contracts/claude.ts:44:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/providers/index.ts:6:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/create-agent.ts:133:HIJACK
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/create-agent.ts:62:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/create-agent.ts:65:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/library.ts:24:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/library.ts:56:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/library.ts:63:SUPPLY
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/library.ts:71:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/mcp.ts:52:CRED
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/restamp.ts:323:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/templates/restamp.ts:346:PERSIST
  • suspicious: unverified finding skill:.claude/skills/add-github:src/upgrade-state.ts:150:HIJACK
  • suspicious: unverified finding skill:.claude/skills/add-github:src/upgrade-state.ts:204:EXEC

Security findings 163

Code execution

criticalUnverifiedhigh confidence

Undeclared by the artifact's stated channel-install purpose, the Slack pre-step's bootstrap resolves a git remote (NANOCLAW_CHANNELS_REMOTE override, else origin), fetches the mutable, unpinned 'channels' branch, materializes src/provisioning/slack-app.ts from it, and dynamically imports that remotely-fetched file for execution, so setup runs code that is neither shipped in the artifact nor pinned to a commit.

exec(gitFetchBranchCommand(resolved, CHANNELS_BRANCH));
conceal:remotevector:code

Code execution

criticalUnverifiedmedium confidence

Undeclared residue: this GitHub-channel skill's setup harness downloads the unpinned Anthropic installer from claude.ai and pipes it into /bin/bash, executing whatever that URL serves at run time; it is overt and vendor-official but not covered by the declared purpose of adding a GitHub channel.

curl -fsSL https://claude.ai/install.sh | /bin/bash
conceal:remoteevasion:scannervector:code

Code execution

criticalUnverifiedmedium confidence

Undeclared residue: the setup harness fetches the Docker installer from get.docker.com and runs it through /bin/sh, then adds the user to the docker group via sudo — host modifications unrelated to the declared GitHub-channel purpose.

curl -fsSL https://get.docker.com | /bin/sh
conceal:remoteevasion:scannervector:code

Persistence

criticalUnverifiedlow confidence

restart.sh re-bootstraps the installed launchd job from the plist under ~/Library/LaunchAgents via `launchctl bootstrap` when it is unloaded, keeping the NanoClaw host service loaded across sessions.

launchctl bootstrap
vector:code

Data exfiltration

criticalUnverifiedhigh confidence

Undeclared marketing-consent capability: after sign-in the setup asks for email updates (default Yes) and POSTs the choice with a consent version and the account token to the account service, a flow the declared GitHub-channel purpose never mentions.

json({ email_updates: optIn, consent_version: CONSENT_VERSION, source: 'cli' }, cred.token),
vector:code

Data exfiltration

criticalUnverifiedhigh confidence

Undeclared for a skill whose declared purpose is GitHub channel wiring: the setup sign-in flow sends a random per-machine telemetry id (kept as 'a telemetry join key' for the broker's mint log) plus an os/arch/version fingerprint and enrollment credentials to the configured account broker, and re-probes the stored bearer token there on every run.

res = await http(`${api}/v1/enroll`, json(enrollWire(body)), HTTP_TIMEOUT_MS);
vector:code

Data exfiltration

criticalUnverifiedmedium confidence

Undeclared by the skill's stated purpose ('Add GitHub channel integration'), the WhatsApp auth version resolver fetches https://wppconnect.io/whatsapp-versions/ (falling back to web.whatsapp.com) during linking — unexplained, plainly visible network residue (R30) that transmits no local data and breaks no listed safety claim.

fetch(TRACKER_URL, { signal: AbortSignal.timeout(LOOKUP_TIMEOUT_MS) })
vector:code

Data exfiltration

criticalUnverifiedmedium confidence

The add-github artifact ships Chat SDK bridge code that makes undeclared Discord API calls, POSTing interaction acknowledgments containing selected answers, user ids and usernames to discord.com, which the declared GitHub-channel purpose does not require.

await fetch(`https://discord.com/api/v10/interactions/${interactionId}/${interactionToken}/callback`, {
vector:code

Data exfiltration

criticalUnverifiedmedium confidence

The shipped community-portal DeviceClient makes undeclared HTTPS calls to a portal origin carrying the install bearer token and device-proof headers, and its sync() redeems and locally stores perk credential secrets, none of which the declared GitHub-channel purpose covers.

const response = await fetch(`${this.origin}${route}`, {
vector:code

Data exfiltration

criticalUnverifiedmedium confidence

The shipped CellLink maintains an undeclared reconnecting outbound WebSocket to the portal account cell that receives perks snapshots and device presence frames, behavior not needed by the declared GitHub-channel purpose.

const frame = mux.receive(event.data);
vector:code

Persistence

criticalUnverifiedmedium confidence

Undeclared by the target's stated purpose (residue R49/C396, adjudicated unexplained): the template-library clone passes core.hooksPath=/dev/null to git, which writes that config into the freshly cloned repository to disable hook execution there; the setting is defensive hardening confined to the temp clone, but it is a host-config-write capability the declared GitHub-channel-integration description never mentions.

'core.hooksPath=/dev/null',
vector:code

Persistence

highUnverifiedmedium confidence

The add-codex skill instructs the agent to overwrite the host, container, and setup source trees with its payload directory, installing the runtime code that hardcodes danger-full-access, approval_policy never, and unconditional auto-approval into the agent runner.

Copy the Codex payload from this skill's `payload/` into all three trees (additive — overwrite each file).
vector:instruction

Persistence

highUnverifiedmedium confidence

Undeclared residue (R65, adjudicated unexplained): the add-teams skill instructs a host configuration write, `npm config set prefix ~/.npm-global`, as a conditional EACCES fallback — a change to the user's npm prefix configuration that the declared channel-integration purpose does not require, though it is disclosed in prose.

npm config set prefix ~/.npm-global
vector:instruction

Credential access

highUnverifiedmedium confidence

Undeclared for a GitHub-channel integration skill: the bundled Claude provider enumerates the agent's own SDK transcripts under ~/.claude/projects and returns the newest one for the /upload-trace diagnostics lookup, a sensitive transcript read the declared purpose does not explain.

const projects = path.join(os.homedir(), '.claude', 'projects');
vector:code

Persistence

highUnverifiedmedium confidence

container/install-cli-tools.sh derives a pnpm only-built-dependencies policy file from the runtime-extended manifest and writes it to /root/.npmrc, re-enabling install-time build scripts that pnpm otherwise skips.

require(
vector:code

Code execution

highUnverifiedmedium confidence

container/install-cli-tools.sh runs as root and executes `pnpm install -g` for every package listed in a manifest that skills extend at runtime, so a skill-added entry with a native postinstall gets its build script executed on the host.

pnpm install -g 
vector:mixed

Persistence

highUnverifiedlow confidence

docs/upgrade-recovery.md instructs coding agents to run the upgrade-state override command automatically and to stop only if the upgrade failed, clearing the host's supported-path tripwire without pausing for user confirmation — an instruction beyond the add-github skill's declared purpose, though guarded by the document's own completion conditions.

run the command above automatically and restart
vector:instruction

Credential access

highUnverifiedlow confidence

The Photon setup flow exchanges device codes with the configured dashboard host, then persists the returned OAuth access token via saveAuth to an undisclosed on-disk location and writes PHOTON_PROJECT_SECRET into the project .env.

saveAuth({ access_token: token });
vector:code

Code execution

highUnverifiedlow confidence

The headless skill-refresh path executes nc:run directive bodies — shell commands with {{var}} substitution defined in installed skills' SKILL.md documents — via execSync in the repository root, giving any skill document on disk code execution during refresh.

return execSync(command, {
vector:mixed

Privilege escalation

highUnverifiedmedium confidence

When the Docker socket returns permission-denied on Linux, setup re-executes itself under `sg docker -c pnpm run setup:auto` to regain docker-group (root-equivalent) access — conditional and warned, but an undeclared privilege-context change relative to the declared add-GitHub-channel purpose.

spawnSync('sg', ['docker', '-c', 'pnpm run setup:auto'], {
trigger:conditionalvector:code

Credential access

highUnverifiedmedium confidence

The setup harness reads the SLACK_BOT_TOKEN environment variable (process env and .env) to decide whether to offer Slack channel setup — undeclared residue for a skill whose declared purpose is adding a GitHub channel; the value is only tested for presence, not transmitted, in the reviewed code.

!(process.env.SLACK_BOT_TOKEN || readEnvKey('SLACK_BOT_TOKEN'))?.trim()
vector:code

Persistence

highUnverifiedmedium confidence

Setup installs NanoClaw as a persistent per-user launchd/systemd background service that relaunches the assistant across sessions, referenced here via launchctl bootstrap of a ~/Library/LaunchAgents/<label>.plist and systemctl --user restart of the unit.

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/${label}.plist
vector:code

Data exfiltration

highUnverifiedlow confidence

Setup emits telemetry events (first-chat results, provider/channel/image-source choices, completion status and durations) through phEmit to a destination not shown in the reviewed units — undeclared in the reviewed material for a GitHub-channel skill.

phEmit('setup_completed', { duration_ms: Date.now() - RUN_START });
vector:code

Code execution

highUnverifiedmedium confidence

The channel setup harness reads and executes skills from .claude/skills/<name> via runSkill (applying their SKILL.md directives, with service restarts) for any registered companion channel — undeclared residue for a GitHub-channel skill, though plainly visible and not hidden.

const res = await runSkill(`.claude/skills/${skill}`, {
vector:codevector:instruction

Supply chain

highUnverifiedhigh confidence

During Slack channel setup, loadProvisioningCore fetches a TypeScript module from the mutable 'channels' branch of a git remote chosen by resolveChannelsRemote (or the NANOCLAW_CHANNELS_REMOTE env override), writes it into the tree via git show, and executes it with a dynamic import, so whatever code that remote serves at run time runs inside the setup process that holds .env credentials and broker tokens.

exec(gitFetchBranchCommand(resolved, CHANNELS_BRANCH));
conceal:remotevector:code

Code execution

highUnverifiedmedium confidence

Undeclared by the artifact's stated purpose, the container setup step auto-runs the repository script setup/install-docker.sh via bash with inherited stdio whenever the docker binary is missing — an auto-run prerequisite installer whose payload is not part of the reviewed units.

execSync('bash setup/install-docker.sh', { cwd: projectRoot, stdio: 'inherit' });
vector:code

Persistence

highUnverifiedlow confidence

Undeclared residue: setup installs an executable docker credential helper into /usr/local/bin or ~/.local/bin and rewrites the credHelpers key of ~/.docker/config.json — host credential configuration the declared GitHub-channel purpose does not mention, though the code shown handles it read-modify-write without writing secrets.

Wiring is one `credHelpers` key in `~/.docker/config.json`, read-modify-write
vector:code

Credential access

highUnverifiedlow confidence

The cred-helper install writes a credHelpers pointer into ~/.docker/config.json and places an executable docker-credential-nanoclaw on PATH so docker routes registry credential payloads to helper code (setup/registry/credential-helper.mjs) that is not among the reviewed units.

credHelpers[registryHost] = CRED_HELPER_NAME;
vector:code

Persistence

highUnverifiedlow confidence

Undeclared residue: the Node installer creates node/npm/npx/pnpm symlinks in ~/.local/bin and prepends that directory to PATH, host PATH manipulation beyond the declared GitHub-channel purpose.

ln -sf ~/node/bin/node ~/.local/bin/node
vector:code

Credential access

highUnverifiedlow confidence

setup/lib/captured-token.ts recovers the operator's Claude OAuth token (sk-ant-oat) from a PTY capture of `claude setup-token` and prints it to stdout for the setup driver to reuse.

Extract the Claude OAuth token from a PTY capture of `claude setup-token`,
vector:code

Code execution

highUnverifiedmedium confidence

Undeclared prerequisite installer: ensureClaudeReady executes the unshown setup/install-claude.sh via bash after a default-yes confirm whenever the Claude CLI is missing (C618), running installer content this artifact does not disclose (D59 is not actually contradicted).

spawnSync('bash', ['setup/install-claude.sh'], {
vector:code

Credential access

highUnverifiedmedium confidence

Undeclared for this skill's stated purpose, ensureClaudeReady captures the user's Claude OAuth token from a PTY capture of the consented claude setup-token run and writes it into process.env.CLAUDE_CODE_OAUTH_TOKEN (R14), an unexplained credential-handling chain (capture file to extractor regex to env write) in a GitHub-channel skill.

if (token) process.env.CLAUDE_CODE_OAUTH_TOKEN = token;
vector:code

Code execution

highUnverifiedmedium confidence

Undeclared execution path: the setup hands a Claude-authored shell command to the unshown helper setup/run-suggested.sh via bash (C623), gated only by an editable confirm, so model-suggested commands run on the host (D59 is not actually contradicted).

spawn('bash', [script, command], {
vector:codevector:mixed

Data exfiltration

highUnverifiedlow confidence

Setup emits fire-and-forget telemetry events, joined by a persistent install identifier, to the third-party PostHog analytics service, with opt-out only via NANOCLAW_NO_DIAGNOSTICS=1.

Thin PostHog emitter shared across setup:auto code.
vector:code

Data exfiltration

highUnverifiedhigh confidence

Undeclared telemetry: the setup harness POSTs a persistent install UUID, platform, and caller-supplied event properties to https://us.i.posthog.com on every run unless NANOCLAW_NO_DIAGNOSTICS=1, contradicting the declared claim that no third-party service is involved and nothing leaves the machine (R15/C489).

void fetch(POSTHOG_URL, {
vector:codevector:mixed

Credential access

highUnverifiedmedium confidence

The skill's shared setup infrastructure reads and manages a bearer-token registry account file under ~/.config/nanoclaw (account.json and registry-auth.json, plus the docker credential-helper view) and resolves a remote account broker at https://registry.nanoclaw.dev — a credential-handling capability that the declared GitHub-channel-integration purpose does not declare; it is unexplained but openly visible, hence contextual risk.

export const DEFAULT_BROKER_URL = 'https://registry.nanoclaw.dev';
vector:code

Credential access

highUnverifiedlow confidence

The registry account flow stores the broker-minted bearer token in plaintext under ~/.config/nanoclaw/account.json and reads it back for docker credential-helper use, with the broker defaulting to a compiled-in constant (DEFAULT_BROKER_URL) that can be overridden per install.

return typeof account.token === 'string' && account.token ? account : undefined;
vector:code

Persistence

highUnverifiedmedium confidence

Setup commits the skill-apply's changes into the operator's git checkout using execFileSync('git', ...) with a synthetic fallback identity ('NanoClaw setup <setup@nanoclaw.invalid>') and, per its own comments, makes machine-made local commits with no hooks and no signing prompt — undeclared by the declared GitHub-channel-integration purpose; visible, not concealed, hence contextual risk.

['user.email', 'setup@nanoclaw.invalid'],
vector:code

Persistence

highUnverifiedmedium confidence

Undeclared residue (R18, adjudicated unexplained, not concealed): the setup auto-commit path runs git with core.hooksPath=/dev/null, commit.gpgSign=false and --no-verify, bypassing operator git hooks and commit signing while committing the files this skill's setup adds — a capability the declared 'Add GitHub channel integration' purpose does not require.

const quiet = ['-c', 'core.hooksPath=/dev/null', '-c', 'commit.gpgSign=false'];
vector:code

Credential access

highUnverifiedlow confidence

The driver reads the project's .env credentials and rebinds values selected by document reuse:/env-set mappings into skill prompt inputs, and in non-TTY runs the reuse confirm auto-accepts, placing .env secrets into the apply flow and command arguments.

env = parseEnv(readFileSync(join(projectRoot, '.env'), 'utf8'));
vector:code

Code execution

highUnverifiedmedium confidence

The skill driver executes commands declared in a skill's SKILL.md run directives by spawning bash -c with the project's bin/ prepended to PATH, so document content becomes arbitrary host shell execution.

spawn('bash', ['-c', cmd], {
vector:mixed

Persistence

highUnverifiedlow confidence

The mounts setup step writes argument- or stdin-supplied JSON (allowedRoots/nonMainReadOnly) to ~/.config/nanoclaw/mount-allowlist.json outside the workspace, configuring which host directories containers may mount, so permissive input widens host exposure to containers.

fs.writeFileSync(configFile, JSON.stringify(parsed, null, 2) + '
vector:code

Destructive action

highUnverifiedmedium confidence

Setup preflight cleanup enumerates sibling NanoClaw launchd plists in ~/Library/LaunchAgents and systemd units in ~/.config/systemd/user and, when their launch target is missing or the service is crash-looping, runs launchctl unload / systemctl --user disable --now and deletes their service config files with fs.rmSync outside any build or cache directory.

fs.rmSync(peer.configPath, { force: true });
vector:code

Code execution

highUnverifiedmedium confidence

The portal setup flow passes server-returned URLs (setup.url/flow.url from SetupClient.start) to an opener that builds `open`/`xdg-open`/`wslview`/`cmd.exe start` shell commands with execSync and only JSON.stringify quoting, so shell substitution such as $( ) inside a malicious or compromised portal URL would execute arbitrary commands on the host.

execSync(`open ${JSON.stringify(url)}`, { stdio: 'ignore' });
vector:code

Data exfiltration

highUnverifiedlow confidence

Setup portal flows send device/account state requests to portal.nanoclaw.dev during setup — undeclared network communication for a skill whose declared purpose is adding a GitHub channel integration.

process.env.NANOCLAW_PORTAL_ORIGIN ||= 'https://portal.nanoclaw.dev';
vector:code

Data exfiltration

highUnverifiedlow confidence

The portal client configures a SetupClient labeled with the machine hostname and current-directory basename and contacts https://portal.nanoclaw.dev (origin overridable via NANOCLAW_PORTAL_ORIGIN) for device registration, sign-in flows, and perk state, sending host-identifying metadata off-host during setup enrollment.

label: `${os.hostname()} · ${path.basename(process.cwd())}`,
vector:code

Code execution

highUnverifiedlow confidence

The setup provider-install path dynamically imports and executes modules that the install engine just wrote into the checkout — undeclared code execution for a skill whose declared purpose is adding a GitHub channel integration.

for (const file of modules) await import(pathToFileURL(file).href);
vector:code

Code execution

highUnverifiedmedium confidence

The provider installer runs shell commands derived from the applied SKILL.md via an execSync callback (including sourcing setup/lib/channels-remote.sh under /bin/bash) and then dynamically imports the freshly appended provider-contract modules into the running setup process, so any injected or manipulated skill content executes on the host.

exec: (cmd) => execSync(cmd, { cwd: projectRoot, stdio: 'pipe', encoding: 'utf8' }),
vector:code

Persistence

highUnverifiedlow confidence

The channel registration step rewrites the agent rules/memory file groups/<folder>/CLAUDE.md via find-and-replace of the assistant name, modifying agent instruction content on disk gated only by the unshown isValidGroupFolder check on --folder.

fs.writeFileSync(mdFile, after);
vector:code

Data exfiltration

highUnverifiedhigh confidence

Residue R23 adjudicated unexplained and undeclared: the consent text displays the external host nanoclaw.dev as the data-use contact for collected email addresses; it is a displayed link, not a network fetch, and the email-consent flow itself is undeclared for the skill's purpose.

What we do with your address: https://nanoclaw.dev/privacy
vector:code

Persistence

highUnverifiedhigh confidence

Sign-in persists long-lived account/registry tokens under ~/.config/nanoclaw and rewrites docker's credential-helper wiring plus the install's image-source state — host-config persistence and credential storage that the declared GitHub-channel purpose does not cover.

wireDockerCredentialHelper(record.registry);
vector:code

Data exfiltration

highUnverifiedlow confidence

The sign-in driver generates a per-machine host id, packs it with OS/arch/version into the client record, and POSTs it to a broker URL taken from NANOCLAW_REGISTRY_API/.env/--api during enrollment, together with the WorkOS IdP access token on the browser path.

const common = { ...body, install_id: body.client.host_id };
vector:code

Data exfiltration

highUnverifiedmedium confidence

The artifact's registry sign-in driver contacts api.workos.com (WorkOS AuthKit device flow) and the NanoClaw broker, exchanging device/account identifiers (host-id, install_id) for an account token — network egress residue (R22) that is unexplained, not concealed, and not declared by the skill's stated purpose of adding a GitHub channel integration.

const DEFAULT_DEVICE_ENDPOINT = 'https://api.workos.com/user_management/authorize/device';
vector:code

Persistence

highUnverifiedlow confidence

The sign-in driver persists registry tokens under ~/.config/nanoclaw and repoints docker's credential-helper configuration at them — host persistence behavior undeclared by the add-github skill's stated purpose.

const CONFIG_DIR = path.join(os.homedir(), '.config', 'nanoclaw');
vector:code

Code execution

highUnverifiedlow confidence

The device-flow login passes the verification URL returned by a remotely configurable IdP endpoint straight to spawn (cmd.exe /c start under WSL, xdg-open/wslview/open elsewhere), so a hostile broker-controlled URL string reaches process execution via cmd.exe metacharacter parsing.

spawn(cmd[0], cmd[1], { stdio: 'ignore', detached: true })
vector:code

Destructive action

highUnverifiedlow confidence

The registry reconcile step spawns docker rmi to delete derived agent-group images identified by its own tag pattern, clearing DB pins first and skipping operator-supplied images.

const rmi = spawnSync(CONTAINER_RUNTIME_BIN, ['rmi', derivedTag], { encoding: 'utf-8' });
vector:code

Code execution

highUnverifiedlow confidence

The registry refresh step spawns bash on container/pull.sh from the project root, chaining setup into execution of a script whose contents are not in evidence and which acquires and retags remote image bytes.

const pull = spawnSync('bash', [path.join(projectRoot, 'container', 'pull.sh')], {
vector:code

Data exfiltration

highUnverifiedhigh confidence

The setup contacts the credential broker over the network to delete a registry session using the stored bearer token — an undeclared vendor-service call.

const res = await fetch(`${broker}/v1/session`, {
vector:code

Credential access

highUnverifiedhigh confidence

The setup machinery reads and writes a bearer-token credential file at ~/.config/nanoclaw/registry-auth.json for a gated docker image registry — an undeclared credential-handling capability for a skill that only declares adding a GitHub channel.

raw = readFileSync(AUTH_FILE, 'utf-8');
vector:code

Data exfiltration

highUnverifiedhigh confidence

The docker credential helper reads the locally stored registry bearer token and posts host metadata (OS, CPU arch, node version, install id, pull digest) with that token to a broker URL taken from a local config file to mint registry credentials — undeclared vendor network contact.

res = await fetch(`${brokerBase(auth)}/v1/credentials`, {
vector:code

Code execution

highUnverifiedmedium confidence

The setup helper script takes a caller-supplied command string in argv, has the user press Enter on a pre-filled readline, and evals it in the user's shell, so an agent-suggested command executes with full shell semantics after a single keystroke.

eval
vector:codevector:mixed

Code execution

highUnverifiedlow confidence

A setup helper script evals commands suggested by the claude-assist agent, gating execution only on a readline Enter prompt and an unverifiable claim that the caller already confirmed the command with the user.

This script is the allowlisted unit — the `eval` happens inside.
vector:code

Code execution

highUnverifiedlow confidence

The run-suggested script's comment asserts the unverifiable precondition that a caller already showed the command to the user and obtained confirmation, which is the only stated guard on its eval of agent-suggested commands.

# caller has already shown the command to the user and gotten confirmation.
vector:mixed

Persistence

highUnverifiedmedium confidence

The setup symlinks its ncl CLI into ~/.local/bin so the binary stays on the user's PATH after setup — an install footprint beyond the declared channel integration.

fs.symlinkSync(source, target);
vector:code

Persistence

highUnverifiedhigh confidence

The setup installs a launchd LaunchAgent plist with RunAtLoad and KeepAlive into ~/Library/LaunchAgents and loads it with launchctl so the NanoClaw host auto-starts at every login and keeps restarting — host persistence the skill's declared channel-integration purpose does not cover.

writeOwnerOnly(plistPath, plist);
vector:code

Persistence

highUnverifiedhigh confidence

The setup writes and enables a systemd unit (Restart=always, loginctl enable-linger) or a detached setsid nohup wrapper to keep the NanoClaw host running across sessions and logouts — persistence not declared by the skill.

fs.writeFileSync(unitPath, unit);
vector:code

Persistence

highUnverifiedmedium confidence

The setup step detects, unloads, and removes other NanoClaw peer services (e.g. the legacy com.nanoclaw plist) before installing its own service — manipulation of other installed services that the skill does not declare.

const peerReport = cleanupUnhealthyPeers(projectRoot);
vector:code

Persistence

highUnverifiedmedium confidence

The nohup fallback writes a 0755 start-nanoclaw.sh wrapper into the project and executes it with /bin/bash, launching a setsid nohup-detached daemon of the checkout's dist/index.js that survives the setup terminal.

execFileSync('/bin/bash', [wrapperPath], { cwd: projectRoot, stdio: 'pipe', timeout: 15_000 });
vector:code

Code execution

highUnverifiedlow confidence

The shipped setup harness spawns the external signal-cli binary (account listing, version probe, and a blocking `link` device-pairing flow) — an undeclared EXEC capability for a skill declared as GitHub channel integration; it is plainly documented in code, so unexplained rather than concealed (adjudicated contradiction leads C691-C693 against D59 are not real contradictions, since D59 concerns the iMessage better-sqlite3 dependency).

spawn(cli, ['link', '--name', DEFAULT_DEVICE_NAME], {
vector:code

Data exfiltration

highUnverifiedlow confidence

The Slack worker sends bearer-authenticated POSTs carrying app identifiers to the remote origin configured in job.serviceBase and receives a Slack bot token back — undeclared network egress for a skill declared as GitHub channel integration; the origin is validated to https or localhost and nothing is hidden, so this is unexplained residue, and the claimed contradiction with D30/D34/D69/D82/D190 (other channels) does not hold.

const response = await fetch(`${base.origin}/v1/apps/${encodeURIComponent(job.app.appId)}/install`, {
vector:code

Code execution

highUnverifiedlow confidence

The Slack worker dynamically imports and executes runChannelSkill('slack', ...) feeding it provisioned bot_token/app_token secrets — an undeclared code-execution path for the GitHub-declared purpose, plainly visible in code and therefore unexplained rather than concealed.

const { runChannelSkill } = await import('./channels/run-channel-skill.js');
vector:code

Persistence

highUnverifiedlow confidence

runSlackJob persists a lock file and a private Slack job file storing the delivered xoxb- bot token, and reports setup status to the remote slackProgressClient endpoint — undeclared persistence and status egress for the GitHub-declared purpose, plainly visible; the paired D14/D21 contradictions are not real (those claims concern setup UI stability and the codex default, not absence of writes).

const save = () => writePrivate(slackJobFile(root), job);
vector:code

Persistence

highUnverifiedlow confidence

Residue R28 adjudicated unexplained: the setup timezone step reads and rewrites the project .env to persist TZ — a file-modification capability the declared GitHub-integration purpose does not state, but it is plainly visible and not concealed, and the paired D14/D21 contradictions do not hold (those claims address UI stability, not file writes).

fs.writeFileSync(envFile, content);
vector:code

Destructive action

highUnverifiedlow confidence

The shipped uninstall flow can recursively delete app data, agent memory (groups/), logs, node_modules and .env, kill the host process, unload launchd/systemd services, and remove containers/volumes/networks — with a --yes mode that skips all confirmations — a destructive capability undeclared by the GitHub-declared purpose; it is gated by default-No prompts and plainly documented, so unexplained rather than concealed, and the paired D59/D14 contradictions do not hold.

p.log.warn('--yes given: deleting everything found below without asking.');
vector:code

Credential access

highUnverifiedlow confidence

Residue R29 adjudicated unexplained: the uninstaller copies the credential-bearing .env to .env.bak (checking for an existing .env.bak first) before deleting the original — undeclared credential-file handling for the GitHub-declared purpose, plainly visible and not concealed.

fs.copyFileSync(envPath, backup);
vector:code

Data exfiltration

highUnverifiedmedium confidence

The GitHub-channel skill ships a complete WhatsApp Baileys linking flow that connects the machine to WhatsApp as a companion device (makeWASocket) and persists linked-device credentials under store/auth/, an undeclared capability for its stated purpose — unexplained rather than concealed.

const sock = makeWASocket({
vector:code

Code execution

highUnverifiedlow confidence

CellLink maintains a reconnecting WebSocket to the configured portal origin and feeds every inbound frame into mux.receive and host callbacks (onSnapshot/onChange), giving the remote portal a standing trigger into host behavior whose callback actions are not shown in these units.

const frame = mux.receive(event.data);
vector:code

Credential access

highUnverifiedlow confidence

The undeclared community-portal Slack installer copies the host's entire process environment into a detached Slack worker child process (the declared purpose covers only adding a GitHub channel), which can carry unrelated host secrets into a long-lived background process; the capability is visible, not concealed.

const env = { ...process.env };
vector:code

Code execution

highUnverifiedmedium confidence

The Slack setup flow persists Slack app/bot tokens and the user's account identity token into a private job file and then silently spawns a detached child process running setup/slack-worker.ts via tsx with an inherited copy of the host environment, creating an unsupervised credential-bearing execution path whose destination code is not shipped in the reviewed units.

spawn(process.execPath, ['--import', 'tsx', path.join(root, 'setup/slack-worker.ts')]
vector:code

Code execution

highUnverifiedlow confidence

The Slack install job persists an identity snapshot and a detached tsx worker (setup/slack-worker.ts) that applies the Slack channel skill is spawned after workspace approval, resumed after host restart, and gated against duplicate spawn on cell updates, an auto-run setup process whose payload is not present in the shown units.

Start the detached worker for a saved job that still has work to do.
trigger:conditionalvector:code

Credential access

highUnverifiedmedium confidence

Undeclared residue R32 (unexplained, not concealed): resolveProviderContribution builds its provider context with hostEnv: process.env, handing the entire host process environment, including any credential-bearing variables, to provider adapter code (fn(context)/legacyOverlay), an all-env access the declared purpose of adding a GitHub channel integration does not declare.

hostEnv: process.env,
vector:code

Persistence

highUnverifiedmedium confidence

Undeclared residue R33 (unexplained, not concealed): the spawn path composes a per-group CLAUDE.md instruction document on the host (composeGroupProjectDoc) and mounts it read-only into every agent container at /workspace/agent/CLAUDE.md, an agent control-plane instruction-file write that the declared GitHub-channel purpose does not declare.

containerPath: projectDocument?.containerPath ?? '/workspace/agent/CLAUDE.md',
vector:code

Code execution

highUnverifiedlow confidence

buildAgentGroupImage reads packages_apt/packages_npm JSON from the central DB, interpolates them and the agentGroupId unsanitized into Dockerfile RUN lines (line 1627/1634/1635) and into the host shell command docker build -t ${imageTag} -f ${tmpDockerfile} executed via execAsync (line 1659), so a malicious DB-stored package name or group id executes arbitrary shell commands during image build.

RUN apt-get update && apt-get install -y ${aptPackages.join(' ')}
vector:code

Credential access

highUnverifiedlow confidence

Undeclared residue (R35): configuredDriverKind reads the NANOCLAW_RUNTIME_DRIVER setting from process.env, environment access not covered by the declared GitHub channel-integration purpose and not concealed but also not declared.

env: NodeJS.ProcessEnv = process.env
vector:code

Credential access

highUnverifiedlow confidence

Undeclared residue (R36): mountPolicy reads the NANOCLAW_SESSION_MATERIAL_ROOT setting from process.env/.env while deriving host mount roots, an environment-access capability the declared GitHub channel-integration purpose does not declare.

materialsRoot: readSetting('NANOCLAW_SESSION_MATERIAL_ROOT', env) || path.join(DATA_DIR, 'session-materials'),
vector:code

Credential access

highUnverifiedlow confidence

Undeclared residue (R34): src/drivers/index.ts reads host settings from process.env and the .env file via readSetting, an environment-access capability the declared GitHub channel-integration purpose does not declare, though the read is confined to a fixed two-key allowlist (NANOCLAW_RUNTIME_DRIVER, NANOCLAW_SESSION_MATERIAL_ROOT) rather than all env as the detector lead suggested.

env: NodeJS.ProcessEnv = process.env
vector:code

Code execution

highUnverifiedlow confidence

The SQLite task API (insertTaskRow/updateTask) writes caller-supplied `script` content into scheduled kind='task' rows that the mailbox system later runs (the 'script-skip:error' status and 'pre-task script crashed' comments confirm task scripts execute), so any caller able to influence task content gains a write-then-execute path on the host whose execution site and privileges are not shown in these units.

if (update.script !== undefined) parsed.script = update.script;
vector:code

Persistence

highUnverifiedmedium confidence

Undeclared for the declared GitHub-channel skill: the shipped code injects a PreCompact hook command (bun /app/src/compact-instructions.ts) into Claude Code settings so a bundled script auto-runs in the agent runtime, which the declared GitHub channel integration does not require.

preCompact.push({ hooks: [{ type: 'command', command: PRE_COMPACT_COMMAND }] });
vector:code

Persistence

highUnverifiedlow confidence

Migration code documents seeding or reconciling the agent control-plane file settings.json in the Claude state directory.

Seed or reconcile `settings.json` in the Claude state directory.
vector:code

Persistence

highUnverifiedmedium confidence

Undeclared for the declared GitHub-channel skill: shipped host code seeds or rewrites Claude Code's settings.json in the Claude state directory (agent control-plane), a write adding a GitHub channel integration does not need.

dir.replaceFile(CLAUDE_SETTINGS_FILE, result.content)
vector:code

Code execution

highUnverifiedlow confidence

On every tick the portal runtime relaunches the locally saved Slack install worker (launchSlackJob) when the remote cell link and a saved job whose identity matches the account indicate it, letting the remote portal service trigger local worker execution; the worker's implementation is not in the reviewed units.

if (await launchSlackJob(root)) log({ event: 'slack_install_resumed', deviceId: current.deviceId });
trigger:conditionalvector:code

Credential access

highUnverifiedlow confidence

The community-portal runtime maintains a persistent remote link whose pushes trigger local reads of stored perk credentials and a saved Slack install worker, with no shown bound on where that material is subsequently used or sent.

Cell pushes only trigger a fresh read of locally saved, authorized
trigger:conditionalvector:code

Data exfiltration

highUnverifiedmedium confidence

The community-portal runtime module, unrelated to this skill's declared GitHub-channel purpose, reads the host's install identity and device-key files from the home directory and keeps a persistent bearer-authenticated link and reconciliation channel open to a locally configured portal origin while resuming saved Slack install jobs on remote push; this capability is undeclared by the target and the remote sink implementation is not shown.

const account = local?.deviceId && local.origin ? await readInstallIdentity({ homeDir }) : null;
vector:code

Data exfiltration

highUnverifiedlow confidence

The community-portal runtime reads the install token (account.json) and device key (device-key.json) and transmits this identity material over bearer/WebSocket routes to a remote origin taken from the mutable local journal file, sending credential material off-host to a destination the reviewed units do not pin or validate.

token: account.token,
vector:code

Credential access

highUnverifiedlow confidence

The mount-security validator checks only the realPath of a mount root and does not descend into it, so an operator-granted broad allowed root such as ~ or ~/.config mounts every credential beneath it (.ssh, .aws, .netrc, id_rsa) into the container regardless of the blocked-pattern list.

Allowlist `~` (or `~/.config`) and every credential below it
vector:code

Code execution

highUnverifiedlow confidence

The mount-security module's own comments document that a read-write mount of the host's ~/.local/bin is a container-to-host code-execution primitive (drop a file, wait for the host to run it), which the root-only validator does not prevent under a broad allowed root.

directory is a container-to-host code-execution primitive: drop a file,
vector:code

Destructive action

highUnverifiedlow confidence

Task recurrence rate limiting is bypassed for any task that carries a script, permitting scheduled scripted execution at unrestricted cron frequency and enabling host resource abuse.

if (!recurrence || override || hasScript) return;
vector:code

Code execution

highUnverifiedmedium confidence

Agent-requested MCP server definitions (command, args, env) are stored verbatim in the DB and wired into the container on next start after admin approval, reaching shell execution per the module's own documentation, so a socially engineered approval yields code execution inside the agent container.

verbatim through to shell exec on apply.
vector:code

Persistence

highUnverifiedlow confidence

On every container start the host composes and writes each agent group's CLAUDE.md rules file from host sources plus verbatim agent-influenced persona and MCP-instruction text, persisting the instructions the agent runtime loads as system-prompt content across respawns.

writeAtomic(path.join(groupDir, spec.fileName), content);
vector:code

Persistence

highUnverifiedlow confidence

The host-side compose pipeline writes the agent's standing-instruction project document (the CLAUDE.md rendered by fitToCap) to host disk via writeAtomic's temp-file write plus rename, an agent instruction-file write whose destination path is decided by callers not shown in the reviewed units.

fs.writeFileSync(tmp, content, { flag: 'wx' });
vector:code

Persistence

highUnverifiedmedium confidence

Undeclared by the target's stated purpose of adding a GitHub channel integration, the host runtime composes and writes a CLAUDE.md instruction document into each agent group directory on container start (residue R46, unexplained: plainly visible but covered by no declaration), giving the artifact a control-plane write over agent instructions.

path.join('container', 'CLAUDE.md')
vector:code

Credential access

highUnverifiedmedium confidence

Undeclared by the target's stated purpose, the Claude provider contract designates /workspace/agent/CLAUDE.md as the mounted project document its runtime loads (residue R47, unexplained), an agent-configuration read path covered by no declaration.

containerPath: '/workspace/agent/CLAUDE.md',
vector:code

Persistence

highUnverifiedmedium confidence

The claude provider contract directs the host realization (initializeProviderGroupSurfaces/initializeFile) to create settings.json inside the agent's claude-home state volume mounted at /home/node/.claude from the payload-defined CLAUDE_DEFAULT_SETTINGS constant and to later replace its content via the claude-settings transformer, giving the artifact an agent control-plane write whose payload content is not visible in the reviewed units.

relativePath: 'settings.json',
vector:code

Persistence

highUnverifiedmedium confidence

Template stamping writes fetched-template MCP server entries (with container pluginRoot cwd and ownership marker) into the agent group's container MCP configuration so third-party stdio/http servers auto-launch on spawn.

{ cwd: '${PLUGIN_ROOT}', ...server, plugin: pluginName, pluginRoot }
vector:code

Credential access

highUnverifiedmedium confidence

Undeclared by the target's stated purpose (residue R48, adjudicated unexplained): cloneRegistry spreads the entire host process environment into the spawned git clone process, so any credentials present in env are exposed to the child; standard practice for an authenticated clone, but not part of the declared GitHub-channel integration.

const env = { ...process.env, GIT_TERMINAL_PROMPT: '0', GIT_LFS_SKIP_SMUDGE: '1' };
vector:code

Credential access

highUnverifiedlow confidence

Undeclared by the target's stated purpose (residue R50, adjudicated unexplained): readPluginMcp probes for a legacy .mcp.json inside the plugin directory being stamped and only reports its presence without ever reading the file, a precautionary credential-adjacent residue since .mcp.json is a sensitive agent-config name.

fs.existsSync(path.join(pluginDir, '.mcp.json'))
vector:code

Persistence

highUnverifiedmedium confidence

The restamp apply path rewrites the agent group's MCP server configuration (create, update, or remove of template-owned MCP servers) via updateContainerConfigJson, changing which MCP tools the agent runtime exposes.

if (mcpDirty) ops.push(async () => await updateContainerConfigJson(group.id, 'mcp_servers', next));
vector:code

Persistence

highUnverifiedmedium confidence

The restamp apply path creates, updates, and deletes recurring scheduled tasks carrying template-defined prompts, scripts, and recurrences, establishing a cron-like persistent execution channel in the agent group (new tasks paused, updated tasks keep their armed status).

await createScheduledTask(group.id, prepared, { status: 'paused' });
vector:code

Code execution

highUnverifiedlow confidence

The upgrade tripwire prints a stop message explicitly addressed to a coding agent instructing it to automatically run the FIX_COMMAND command and restart NanoClaw, while FIX_COMMAND is not defined in any shown unit.

CODING AGENT: if you just ran /update-nanoclaw, /migrate-nanoclaw, or
vector:code

Privilege escalation

mediumUnverifiedhigh confidence

The Codex payload copied in by the nc:copy step documents that Codex's sandbox and approval primitives are hardcoded off (approval_policy=never) and its request handler accepts every server-to-client permission request unconditionally, so model-issued commands and paths a sandbox policy would refuse run without any approval prompt.

NanoClaw is the boundary, so accept/grant everything
vector:code

Supply chain

mediumUnverifiedmedium confidence

The add-discord skill's declared mechanism copies executable adapter source from the mutable `channels` branch ref with no pinned revision, so the code installed into core can silently change under an openly declared step.

nc:copy from-branch:channels
vector:instruction

Supply chain

mediumUnverifiedmedium confidence

The add-github skill's declared mechanism copies executable adapter source from the mutable `channels` branch ref with no pinned revision, so the code installed into core can silently change under an openly declared step.

nc:copy from-branch:channels
vector:instruction

Privilege escalation

mediumUnverifiedlow confidence

The add-imessage skill instructs granting macOS Full Disk Access to the Node binary so its local adapter can read chat.db — a declared prerequisite of the local backend that nonetheless gives that binary disk-wide read authority; capability is real but disclosure and purpose are established, so contextual risk only.

**Full Disk Access** granted to the Node binary NanoClaw runs under.
vector:instruction

Supply chain

mediumUnverifiedmedium confidence

The add-imessage skill's declared mechanism copies executable adapter source from the mutable `channels` branch ref with no pinned revision, so the code installed into core can silently change under an openly declared step.

nc:copy from-branch:channels
vector:instruction

Supply chain

mediumUnverifiedmedium confidence

The add-slack, add-teams, and add-telegram skills instruct the agent to copy adapter code from the mutable `channels` git branch rather than a pinned revision, so the code compiled into the host can differ from anything reviewed.

Fetch the `channels` branch and copy the payload into place (overwrite — the branch is canonical):
vector:instruction

Privilege escalation

mediumUnverifiedlow confidence

The add-teams skill instructs the agent to run `teams app rsc add` granting ChannelMessage.Read.Group and ChatMessage.Read.Chat so the bot receives all team messages without @-mention — a disclosed, consent-gated but capability-broadening permission grant reported as contextual risk since no concealment or misuse corroborates it.

teams app rsc add <teams-app-id> ChannelMessage.Read.Group --type Application
vector:instruction

Supply chain

mediumUnverifiedmedium confidence

The add-telegram skill instructs the agent to overwrite local channel source files with code fetched from the mutable `channels` branch, unpinned to any commit, so the installed adapter code is whatever the branch holds at run time (openly declared mechanism, but branch trust is unverifiable from this batch).

Fetch the `channels` branch and copy the Telegram adapter, its pairing helper
vector:instruction

Privilege escalation

mediumUnverifiedmedium confidence

resolveClaudeExecutionPolicy returns permissionMode 'bypassPermissions' with allowDangerouslySkipPermissions true, and ClaudeProvider.query forwards both into the SDK query options, so every agent tool execution runs with the SDK's permission prompts disabled, with container isolation claimed (in comments, unverifiable here) as the only remaining boundary.

permissionMode: 'bypassPermissions',
vector:code

Privilege escalation

mediumUnverifiedlow confidence

A recovered source comment in the Claude provider configuration states the agent runs unrestricted in the container with the SDK's own permission prompts disabled, relying on container isolation and an allow-list as the only boundaries.

Claude runs unrestricted inside the container: NanoClaw's container
vector:code

Privilege escalation

mediumUnverifiedmedium confidence

Undeclared for a GitHub-channel integration skill: the bundled Claude provider's execution policy hard-codes permissionMode 'bypassPermissions' and allowDangerouslySkipPermissions true, which the query path passes into every SDK run, disabling the SDK's own permission gating and relying only on an unverifiable container-isolation claim.

permissionMode: 'bypassPermissions';
vector:code

Supply chain

mediumUnverifiedmedium confidence

container/install-cli-tools.sh derives pnpm only-built-dependencies opt-ins from cli-tools.json and writes them to /root/.npmrc before pnpm install -g, so the pinned packages' install-time postinstall build scripts execute during the image build — an install-time code-execution surface that is disclosed in comments and pinned, but not required by the add-github skill's declared channel-integration purpose.

const optIns = tools.filter((t) => t.onlyBuilt).map((t) => 
vector:code

Supply chain

mediumUnverifiedlow confidence

container/pull.sh pulls the agent image reference without requiring a digest pin and, when env and versions.json pins are unset, takes the reference from release-image.sh's remotely refreshed list, so a mutable tag's image bytes are fetched once and never re-verified.

A mutable tag is fetched once and then never re-checked
vector:code

Supply chain

mediumUnverifiedlow confidence

container/pull.sh downgrades the agent-runner lockfile-drift guard from a hard failure to a warning, accepting a registry image whose baked node_modules no longer matches the checkout's bun.lock.

warn rather than refuse, and let operators take the patched image
vector:code

Agent hijacking

mediumUnverifiedmedium confidence

docs/upgrade-recovery.md instructs coding agents to automatically run the upgrade-state stamping script and restart NanoClaw whenever the agent itself judges a prior upgrade reported success, asking a human only on failure, which auto-executes an override of the startup upgrade-integrity tripwire (the marker asserted as reaching the current version 'through a path you trust').

**Coding agents:** if the upgrade you just ran reported success, run the command above automatically and restart. Only stop to ask a human if the upgrade itself failed or you can't confirm it finished.
trigger:conditionalvector:instruction

Privilege escalation

mediumUnverifiedmedium confidence

docs/upgrade-recovery.md instructs coding agents to run `pnpm exec tsx scripts/upgrade-state.ts set` automatically and restart, clearing the version tripwire without pausing for human confirmation whenever an upgrade self-reports success.

run the command above automatically and restart
vector:instruction

Supply chain

mediumUnverifiedmedium confidence

The artifact's skill application engine (scripts/skill-apply.ts) resolves a `from-branch` registry ref via an env override, the first remote that carries the branch, or origin and applies that mutable remote content through copy/append/env-set phases plus dependency installs and command execution, so the instructions and code it runs can change without review; this remote-fetch-and-apply capability is undeclared relative to the target's GitHub-channel-integration purpose.

Resolve which remote carries a `from-branch` registry branch.
Decoded
Resolve which remote carries a `from-branch` registry branch. Defaults to a generic resolver (env override → first remote that has the branch → origin); setup injects one that reuses setup/lib/channels-remote.sh for exact parity.
vector:code

Supply chain

mediumUnverifiedlow confidence

The repo's skill-refresh tooling resolves skill content from a mutable git registry branch (origin or an env-chosen remote) and executes package-manager and shell commands built from SKILL.md directive bodies, a remote-code/execution surface beyond the declared add-github skill purpose, though operator-invoked and partially version-pinned.

const override = process.env.NANOCLAW_REGISTRY_REMOTE ?? process.env.NANOCLAW_CHANNELS_REMOTE;
vector:code

Supply chain

mediumUnverifiedlow confidence

Setup clones a remote git template registry and copies operator-selected agent templates into the local install, with the registry URL and revision pinning not shown — an undeclared mutable-instruction fetch relative to the declared add-GitHub-channel purpose.

registry = await cloneRegistry();
vector:code

Supply chain

mediumUnverifiedmedium confidence

setup/channels/slack-auto.ts bootstraps and dynamically imports executable TypeScript (src/provisioning/slack-app.ts) from the mutable `channels` git branch via git fetch + git show, so setup can execute remote code that is not pinned to a commit.

one file from the channels branch the same way the skill engine fetches
vector:mixed

Privilege escalation

mediumUnverifiedmedium confidence

Undeclared by the artifact's stated purpose, the container setup step uses sudo to start the Docker service and to add the current user to the root-equivalent docker group, then re-executes itself under sg docker, expanding host privileges beyond a channel-install task.

spawnSync('sudo', ['usermod', '-aG', 'docker', process.env.USER ?? ''], {
vector:code

Privilege escalation

mediumUnverifiedmedium confidence

The container setup step automatically executes 'sudo systemctl start docker' with inherited stdio (so sudo can prompt for the operator's password) when the Docker daemon is not running, performing a privileged service start without first asking the operator.

execSync('sudo systemctl start docker', { stdio: 'inherit' });
vector:code

Privilege escalation

mediumUnverifiedlow confidence

The setup scripts are deliberately structured so that curl-pipe-shell and sudo pipelines live inside script files that permission allowlists approve as a unit, keeping the remote-execution pipeline invisible to command-line inspection at approval time.

the allowlisted unit; the curl | bash pipe lives inside it.
vector:code

Supply chain

mediumUnverifiedmedium confidence

setup/install-github.sh copies the GitHub adapter code from the mutable `channels` git branch and appends a self-registration import, executing code not pinned to a commit as part of the GitHub channel install.

Copies the GitHub adapter in from the `channels` branch; appends the
vector:mixed

Supply chain

mediumUnverifiedlow confidence

When no existing git remote points at the nanoclaw repository, channels-remote.sh adds an `upstream` remote hardcoded to https://github.com/nanocoai/nanoclaw.git so subsequent channel setup fetches and applies the channels branch from that remote.

git remote add upstream https://github.com/nanocoai/nanoclaw.git
vector:code

Privilege escalation

mediumUnverifiedmedium confidence

Setup failure and help handoffs spawn an interactive claude session with --permission-mode auto, granting the spawned agent prompt-free tool execution on the host for the duration of the handoff.

'--permission-mode', 'auto'
vector:code

Privilege escalation

mediumUnverifiedlow confidence

On Linux with a system-level systemd unit, restart.sh falls back to passwordless sudo systemctl restart when the user is not root, restarting a host service with elevated privileges.

sudo -n systemctl restart
trigger:conditionalvector:code

Privilege escalation

mediumUnverifiedmedium confidence

The setup auto-commit path disables Git safety mechanisms (core.hooksPath=/dev/null, commit.gpgSign=false, commit --no-verify) when committing the files a skill apply wrote, bypassing repository pre-commit hooks and signature enforcement on the host checkout.

const quiet = ['-c', 'core.hooksPath=/dev/null', '-c', 'commit.gpgSign=false'];
vector:code

Privilege escalation

mediumUnverifiedmedium confidence

Undeclared weakening of presented confirmation gates: the setup wizard's default confirm seam returns true automatically in non-TTY runs and treats decline as proceed (decline is a discarded pause, never an abort), so the natural-barrier and URL-offer prompts never actually block side-effecting setup steps.

if (!process.stdout.isTTY) return true;
vector:code

Manipulation

mediumUnverifiedmedium confidence

The driver's event handler extracts a URL from document-rendered operator text and opens it in the operator's browser behind a yes/no gate that auto-approves in non-TTY runs, letting a crafted skill document drive browser navigation to an attacker-chosen address.

if (url !== undefined && (await confirm(`Open ${url} in your browser?`))) await open(url);
vector:mixed

Privilege escalation

mediumUnverifiedmedium confidence

The skill driver's default confirm seam resolves TRUE in non-TTY runs, so natural-barrier confirmation gates and offers auto-proceed without an operator, silently skipping the checkpoint the barrier exists for.

a non-TTY run resolves TRUE (proceed), so a headless run with full
trigger:conditionalvector:code

Privilege escalation

mediumUnverifiedlow confidence

The Teams package builder writes an app manifest that requests tenant-level Application RSC permissions so the bot silently receives every channel and group-chat message without @-mention.

Include RSC permissions (ChannelMessage.Read.Group, ChatMessage.Read.Chat)
vector:code

Supply chain

mediumUnverifiedlow confidence

The dial pairing step executes src/channels/dial-pairing.js via dynamic import, code that the artifact's own comments state the /add-dial skill copies in from the mutable `channels` branch before this step runs, so unpinned branch content reaches runtime execution.

const { createPairing, getLineLock, waitForPairing } = await import('../src/channels/dial-pairing.js');
vector:code

Supply chain

mediumUnverifiedlow confidence

The provider/channel skill install path can resolve git remotes and copy content from a branch (the nc:copy from-branch directive), pulling mutable remote content into the install — undeclared by the add-github skill's stated purpose.

execSync('source setup/lib/channels-remote.sh; resolve_channels_remote', {
vector:code

Supply chain

mediumUnverifiedmedium confidence

The undeclared image path executes container/pull.sh via bash to acquire a prebuilt 'hardened' agent image from a remotely configured registry whose pin and provenance are not shown in this batch, so setup pulls remotely sourced bytes that later run as the agent.

spawnSync('bash', [path.join(projectRoot, 'container', 'pull.sh')], {
vector:code

Privilege escalation

mediumUnverifiedmedium confidence

The setup runs sudo setfacl to grant the current user read-write access to /var/run/docker.sock, expanding container privileges (docker socket access is root-equivalent) without any declared need in a channel-integration skill.

execSync(`sudo setfacl -m u:${user}:rw /var/run/docker.sock`, {
vector:code

Supply chain

mediumUnverifiedlow confidence

The channels barrel documents that channel skills install by copying their module from a mutable git branch and appending a self-registration import to this file, which would run fetched code in-process with the host agent daemon.

copy their module from the `channels` branch and append a
vector:codevector:instruction

Supply chain

mediumUnverifiedlow confidence

The derived agent-image build appends operator-selected npm packages to the pnpm build-script allowlist in /root/.npmrc so their postinstall scripts execute at image build time, running third-party install-time code inside the built image.

to /root/.npmrc (base image sets it up for agent-browser) so packages
vector:code

Privilege escalation

mediumUnverifiedlow confidence

The host delivery pipeline documents that its agent-to-agent channel permission check fails open — when the optional agent_destinations table is absent, all non-origin channel sends are permitted without an ACL row — a permission bypass of the row-exists-iff-permitted ACL design that the add-github skill's declared channel-integration purpose does not cover and this batch does not show implemented.

we permit all non-origin channel sends (the
vector:code

Supply chain

mediumUnverifiedmedium confidence

The create_agent template branch downloads a template from the remote 'public template library' via ensureTemplateLocal and stamps it into a new agent group's scaffold and instructions (createAgentFromTemplate), a fetch-remote-instructions-then-provision chain that runs without admin approval for trusted global-scope groups.

({ fetched, commit } = await ensureTemplateLocal(template));
vector:code

Supply chain

mediumUnverifiedmedium confidence

The modules barrel ships an install surface, undeclared by the target's 'Add GitHub channel integration via Chat SDK' description, in which /add-<name> skills (the add-github install flow) pull module code from the repository's mutable `modules` branch and append import statements that the barrel executes for side effects at load time, so unreviewed branch-tip code runs on the host.

Registry-based modules (installed via /add-<name> skills, pulled from the
vector:codevector:mixed

Supply chain

mediumUnverifiedlow confidence

The artifact documents that /add-<name> skills install registry modules pulled from a mutable `modules` branch, fetching unpinned remote code into the host at install time.

`modules` branch): append imports below.
vector:code

Privilege escalation

mediumUnverifiedmedium confidence

The permissions module deliberately skips re-authorization of the free-text new-agent name reply (the approval click alone arms capture), so a channel registration and agent creation complete on the approver's next DM even if their owner/admin privilege was revoked in between; this is an undeclared authority shortcut, not part of the declared GitHub-integration purpose.

NOT re-authorized (main's behavior): the click arms the capture and stands
vector:code

Supply chain

mediumUnverifiedmedium confidence

Undeclared by the target's stated purpose, the runtime ships an admin-approved self-modification path where a container agent can request installation of agent-chosen, unpinned apt/npm packages into the container image and registration of new MCP servers into container config with rebuild and container kill, an unpinned-code supply surface covered by no declaration.

await updateContainerConfigJson(agentGroup.id, 'packages_apt', existing);
vector:code

Supply chain

mediumUnverifiedmedium confidence

The self-mod module lets a containerized agent request apt/npm package installation which, after an admin approval replay, is appended to the container config and applied via an unpinned image rebuild and container kill/respawn, introducing third-party code into the agent runtime.

await buildAgentGroupImage(session.agent_group_id);
vector:code

Supply chain

mediumUnverifiedlow confidence

The artifact's documented install model appends skill-supplied import lines to the host provider barrels so that installing the skill causes the host process to import and execute the skill's provider payload (registering container mounts, env passthrough, and contract realization) with host-side privileges at load time.

// Skills add a new provider by appending one import line below.
vector:code

Agent hijacking

mediumUnverifiedlow confidence

Template-authored persona markdown from the fetched library is staged into the agent group and inlined at the top of the provider project doc every spawn, giving the template's author system-prompt-tier control over the agent's instructions if the remote template is malicious.

system-prompt tier on any provider
vector:code

Supply chain

mediumUnverifiedmedium confidence

The shipped template system shallow-clones plugin templates from the remote repository nanocoai/nanoclaw-templates and inlines each template's persona at the top of the agent's project document every spawn as system-prompt-tier instructions, so remote repository content becomes agent instructions.

The template persona is written to the provider-neutral `instructions.prepend.md`
vector:mixed

Supply chain

mediumUnverifiedmedium confidence

The template-library module prepares an execFile-based clone and points its index fetch at the mutable 'main' branch of a remote GitHub repo, so agent persona/system-prompt-tier template content (instructions, skills, MCP server configs) can change without a pinned revision — an undeclared remote-instruction fetch relative to the skill's stated GitHub-channel purpose.

const INDEX_URL = `https://raw.githubusercontent.com/${LIBRARY_REPO}/${LIBRARY_BRANCH}/index.json`;
vector:code

Supply chain

mediumUnverifiedmedium confidence

Undeclared by the target's stated purpose: the host fetches agent-facing template content (skills, personas, MCP server configs, tasks) from a mutable branch of a remote GitHub repository plus a remote index URL rather than a pinned commit, so upstream changes flow into stamped agent groups; validation gates (manifest schema, symlink refusal, caps, secret lint) apply but the channel is branch-mutable.

https://github.com/${LIBRARY_REPO}
vector:code

Agent hijacking

mediumUnverifiedlow confidence

The upgrade tripwire stops the host at boot with a message written for the coding agent that ran an unsanctioned upgrade to act on automatically, an agent-directed instruction channel whose content is not shown in the artifact.

sanctioned path, stop with a message written for the coding agent that
vector:mixed

Open questions 358

What the analysis could not settle from the code alone.

Is the `channels` git branch that the three channel skills tell the agent to fetch hosted in this same repository, and what exact content does it resolve to at runtime?
Supply chain
Detector lead DET:0087685591ba894d cites `enroll(api, { method: 'code', code: presetCode, client: clientRecord() })` in setup/registry-login.ts line 1193; no unit in this batch references that file, so whether the enrollment flow sends codes or credentials off-host beyond the documented registration cannot be settled here.
Data exfiltration
The target skill is add-github, but every unit in this batch belongs to sibling skills (add-imessage, add-slack, add-teams, add-telegram) or container runner code; the add-github instruction surface itself was not shown in this batch.
Detector lead DET:010e60b75f17677c flags file_read 'id_rsa' in src/modules/mount-security/index.ts; that file is not among the owed units, so the capability could not be verified from the instruction surface shown.
Credential access
Claim-contradiction leads DET:00b2fe593b67c428, DET:01a134d16f8e46f2, DET:01e76658add41076 and DET:026f7bc121589fed cite writes and SQL in src/ files that are not among the owed units; they could not be confirmed from the surface shown.
Every unit in this batch is generic NanoClaw setup infrastructure (service install, docker registry sign-in, Telegram/Signal/Teams/Dial pairing, uninstall, verification); none of the text shown is specific to GitHub channel integration, so whether this setup surface falls within the declared add-github task is not established from this batch.
Unconfirmed detector leads point at code sinks in files not served to this batch (setup/service.ts launchctl load, setup/environment.ts docker exec, setup/platform.ts open, scripts/skill-apply.ts dynamic writes, src/db/coordination.ts SQL insert, src/db/migrations SQL); the 'claims' they contradict read as unrelated doc comments, so the hits look spurious, but the sink files were not reviewable in this pass.
The comment states a remote-backend skill replaces src/db/compose.ts; does any bundled install path in this artifact perform that source-file replacement, and what backend endpoint or package would it wire in?
Supply chain
The image-build path appends packages to /root/.npmrc so their postinstall scripts execute during docker build; which packages are allowlisted this way, are they pinned, and is the allowlist operator-controlled rather than artifact-controlled?
Supply chain
src/drivers/installed.ts and src/gateway-providers/installed.ts document that skills append import lines to these host source files to register drivers/gateway providers; does this artifact's install actually modify those files, and with what imported code?
Supply chain
Scope mismatch unresolved: the target's declared description is 'Add GitHub channel integration via Chat SDK', yet all 62 units in this batch are OpenAI Codex provider setup code under .claude/skills/add-codex (credential vaulting, codex CLI execution). Whether these units belong to the add-github artifact's declaration set or are a sibling skill in the same repository cannot be settled from the evidence shown; the declared-vs-actual adjudication of the whole batch depends on it. Contradictions ⟦… 361 more chars …⟧
Whether the `nc:copy from-branch:channels` directive resolves the `channels` branch to a pinned commit at install time or always pulls the mutable branch head; the shown units only name the branch and state it is canonical.
Supply chain
The bypassPermissions execution policy is justified only by the in-code assertion that NanoClaw's container isolation and the OneCLI allow-list are the security boundary; nothing in this batch shows whether that isolation actually bounds the agent, so whether the permission bypass is compensated remains open.
Privilege escalation
The build output directs users to https://echo.ai while the canonical remote validated by release-image.sh is nanocoai/nanoclaw — is echo.ai the actual publisher of NanoClaw, or does the printed URL misattribute who publishes the artifact?
Impersonation
The target's declared purpose is a GitHub channel integration, but this batch's units are iMessage/Photon onboarding (scripts/photon-setup.ts talking to app.photon.codes and spectrum.photon.codes), generic channel bootstrap (scripts/init-first-agent.ts), and repo infra scripts — do these files ship inside .claude/skills/add-github or are they repository-shared scripts the skill merely invokes, and does the add-github skill actually execute them? If the skill ships an iMessage vendor setup wizard⟦… 49 more chars …⟧
Whether the repository's package-manager configuration (not shown in this batch) disables dependency lifecycle build scripts during the verifier's `pnpm install --frozen-lockfile` and `bun install --frozen-lockfile` steps, which determines whether those installs genuinely contradict the claim that NanoClaw doesn't run dependency build scripts; the leads C562-C571 were otherwise verified as a normal pinned-registry build/test harness and not a contradiction of the add-imessage claim.
Code execution
Which module implements phEmit and what off-host destination receives the telemetry events (first-chat results, provider/channel/image-source choices, setup completion)?
Data exfiltration
Does cloneRegistry pin a specific remote URL and revision for the template library, and what exactly does ensureTemplateLocal copy from the clone into templates/?
Supply chain
What does the REGISTRY_LOGIN_SCRIPT executed via bash during image-source authentication do — which endpoints does it contact and what identity data does it record or send (the text claims only the email address and fetch fact)?
Code execution
Which repository `origin` refers to for the `channels` branch fetch in install-github.sh, and whether any pin or integrity check covers the copied adapter, is not determinable from the shown evidence.
Supply chain
Whether the add-github channel flow actually invokes this shared setup machinery (restart.sh service control including sudo -n systemctl restart and launchctl bootstrap, and the registry sign-in path), or these files are only exercised by other channels or the hardened path — the skill's own step list is not in this batch. Residue R61 (node -e timestamp) and R62 (launchctl bootstrap) were adjudicated necessary for a host restart, and R16/R17 (env inheritance to spawned setup children) as necessa⟦… 42 more chars …⟧
The CONFIG registry declares a 'gatewayProvider' entry ('Credential gateway — Select the credential and egress gateway installed for this NanoClaw copy') with empty options in this view; what values can it take and how does the selected gateway change credential handling or egress destinations?
Credential access
Which git remotes does resolve_channels_remote read or add (e.g. auto-add-upstream), and are from-branch skill copies pinned to a commit or tracking a mutable branch?
Supply chain
What identity or telemetry data does portalClient transmit to portal.nanoclaw.dev during setup (readInstallIdentity, device state, perks)?
Data exfiltration
Do any of this batch's contradictions (C490-C668) actually hold, given the paired claims D14/D21/D30/D34/D59/D69/D82/D190 describe other channel skills' behavior (codex setup screens, Discord DMs, iMessage chat.db, Teams webhook binding) while the observed network/file/exec capabilities belong to shared NanoClaw setup? Current adjudication: none is a real contradiction — the broker/IdP HTTP calls, 0600 credential writes, xdg-open/wslview spawns, docker rmi, and bash pull.sh do not falsify those ⟦… 53 more chars …⟧
Whether the caller of run-suggested.sh actually shows the suggested command and obtains explicit user confirmation before invoking it; the in-file claim of prior confirmation is unverifiable from the units shown.
Code execution
Which broker host the registry sign-in writes into registry-auth.json (auth.api/broker_url); the destination of the mint, revoke, and bearer-token sends is runtime-configured and not fixed in the shown units.
Data exfiltration
None of the listed contradictions (C171, C515-C519, C669-C690, and the D14/D21 file-write pairs) were substantiated: the observed capabilities in shared setup code neither send channel messages off-host nor change setup screens or codex defaults, so they are reported as undeclared residue rather than broken claims; confirm whether any other batch establishes a real break.
Whether the add-github skill directory intentionally bundles the entire multi-channel NanoClaw host source (WhatsApp/iMessage/Teams code under one skill root) as a monorepo layout, since the declared description covers only GitHub channel integration; the specific undeclared behaviors (wppconnect fetch, Baileys linking) are reported as findings.
Whether delivering agent-authored ask_question card markup unescaped (fromAgent flag: 'their markup is the agent's own and is not escaped') lets an agent forge host-style UI in chat channels, or is a documented, host-controlled design decision.
Manipulation
Adjudication note: contradiction leads C710-C718 (exec in setup/verify.ts vs D59 'doesn't run dependency build scripts'), C208-C220 (data-dir file writes vs D14/D21 setup-screen and default-agent claims), and C524 (wppconnect version fetch vs the Discord/iMessage/Teams claims D30/D34/D69/D82/D190) do not actually break those claims — the exec calls are service-status diagnostics, not build scripts, the writes are channel data dirs, and the fetch sends no user data — but the claims are homed in s⟦… 64 more chars …⟧
It is not established from the shown units whether the Discord bridge (chat-sdk-bridge.ts) and the community-portal client (DeviceClient/CellLink) are actually wired into the add-github skill's declared runtime flow or are host-repository modules bundled with the artifact.
Data exfiltration
The listed contradictions were adjudicated as not confirmed: the discord.com calls are consistent with the Discord claims D30/D34 rather than breaking them, the cli.ts and device-key.ts/journal file writes are local owner-only lifecycle operations that do not break the add-codex setup-screen claims D14/D21, and the local Unix socket connect (C528) does not break the iMessage/Teams network claims D69/D82/D190; note the claims are homed in other skills' files, so their applicability to this target⟦… 19 more chars …⟧
Contradiction leads C263-C266 could not be confirmed as real contradictions: the cited migrations only alter internal DB schema with defaults or read PRAGMA table_info, and nothing shown changes operator-facing setup screens (D14), the claude/codex CLI default (D21), or anything related to better-sqlite3 build scripts (D59); verifying D14/D21 against the actual setup flow requires code outside this batch.
Contradiction lead C267: the cited code in withSessionEvents only calls driver.prepare(spec) to allocate a session container and shows no file write, so it is not verifiable from the shown evidence that this capability breaks claim D14 ('The setup screens and step sequence do not change.') or D21 (provider default unchanged); the '<dynamic>' file_write attributed to prepare needs the driver implementation.
Persistence
Contradiction leads C280-C312 and C777-C787 pair mailbox SQLite prepare/run calls in src/mailbox/sqlite/index.ts and src/mailbox/sqlite/session-db.ts with safety claims D14 (add-codex setup screens), D21 (add-codex default claude/codex routing), and D59 (add-imessage better-sqlite3 build scripts). Verification against the cited units shows these are ordinary SQL reads/writes on the session mailbox databases (messages_in, messages_out, destinations, session_routing, processing_ack) and do not mod⟦… 264 more chars …⟧
Who calls prepareClaudeMemorySettings and does claudeDir resolve to the operator's personal Claude state directory or a sandboxed container state mount? This determines the reach of the undeclared settings.json/hook write.
Persistence
Whether the src/modules host code shown in this batch (agent-to-agent, approvals, community-portal, cross-session-context) is shipped or activated by the add-github skill or is repository context outside the skill root; this determines whether these capabilities are undeclared residue of the artifact or unrelated host internals.
Residue items R38-R45 are typed as file_read of credential paths (.ssh, .gnupg, .aws, .netrc, .npmrc, .pypirc, id_rsa, id_ed25519), but the cited lines 56-81 of src/modules/mount-security/index.ts are literal entries in the DEFAULT_BLOCKED_PATTERNS denylist that matchesBlockedPattern uses to REJECT container mounts — is there any code path in this module that reads these files, or should the residue premise be refuted as a denylist, not a read?
Credential access
fanOutbound resolves the fan audience via a fallback chain (getMessagingGroupForOwnDestination, then getMessagingGroupByPlatform on channel_type+platform_id) — can that fallback resolve a messaging group other than the conversation the message was actually delivered to, fanning message text into another conversation's sessions (audience widening)?
Data exfiltration
This batch's units implement cross-session message fan-out/backfill, mount-allowlist validation, and channel-approval wiring, none of which the declared description ('Add GitHub channel integration via Chat SDK') needs, and no declared claims are listed for this batch — do declarations in other batches of this pass cover these modules, or are they undeclared platform capabilities shipped alongside the skill?
Code comments assert NanoClaw's container isolation and OneCLI allow-list are the security boundary while Codex runs with danger-full-access and unconditional auto-approval; whether the container actually confines the Codex sub-agent is not established by the shown units, and if that boundary fails the host is exposed.
Privilege escalation
Who controls the `channels` git branch that `nc:copy from-branch:channels` fetches (same repository versus a remote), and can its contents change between runs without a pin?
Supply chain
The detector lead RX-HIJACK-ROLE on 'Enable Developer Mode' in the Discord channel-info section was verified as an instruction to the human operator about Discord app settings, not an agent role reassignment; no action needed, recorded only to close the lead.
newestClaudeTranscript enumerates ~/.claude/projects and is declared on the runtime contract as history.readTrace for a '/upload-trace' diagnostic; the units shown contain only the local read, no sink — where does /upload-trace send the transcript, and is that transfer user-initiated and scoped to one session?
Data exfiltration
claude-config.ts states the shared-memory session hook is 'file-carried (settings.json)' while session-hook.ts only renders memory files; the unit that writes that hook into Claude settings.json (a PERSIST-relevant control-plane write) and what command it executes are not among the shown units.
Persistence
The claim texts quoted by the PY-CLAIM-CONTRADICTION leads (e.g. 'The setup screens and step sequence do not change.', 'Its `chat.db` reader (`@photon-ai/imessage-kit`) brings its own `better-sqlite3` 12.x', 'Open the DM with `POST /users/@me/channels`...') appear in none of the shown units, so the alleged claim-vs-behavior contradictions could not be verified in this pass; the file containing those claims is unidentified.
Manipulation
container/pull.sh content beyond line 300 is not shown; confirm whether the lock-mismatch branch (image lock sha256 differing from the local bun.lock hash) now only warns and never exits, as the TEMPORARY comment states.
Supply chain
Which production component supplies the exec/execStream that applySkill uses for nc:run directives (a setup driver is referenced in comments but not shown), and what can those directive commands do outside the stubbed test harness?
Code execution
Do any shipped SKILL.md files actually use a from-branch copy directive, and against which remote and branch, which determines whether the mutable-branch fetch chain is live in this artifact?
Supply chain
Where do phEmit setup telemetry events (auto_started, image_source_chosen, setup_completed with durations and step outcomes) go — a local progression log or a remote endpoint?
Data exfiltration
Which remote URL does cloneRegistry fetch the template library from, and is the fetched content pinned or branch-mutable?
Supply chain
Which code writes the launchd plist / systemd unit for the NanoClaw background service, and what command does the unit execute?
Persistence
phEmit sends setup-choice events (agent_provider_chosen, channel_chosen) during the wizard; its destination service and payload scope are not shown in these units, so whether telemetry leaves the host and with what content cannot be judged here.
Data exfiltration
The provisioning module fetched from the channels branch (src/provisioning/slack-app.ts) is stated to be outside this tree, so the behavior of the code that loadProvisioningCore executes is not judgeable from the shown content.
Code execution
runChannelSkillWithPreStep reads, queues, and launches background Slack install jobs (readSlackJob/queueSlackJob/launchSlackJob) whose implementing module is not among the shown units, so the background job's actions are unknown.
Code execution
Is the git ref origin/channels pinned or verified (commit SHA or signature) anywhere in the repository before install-github.sh copies src/channels/github.ts from it?
Supply chain
Does any code path forward the captured CLAUDE_CODE_OAUTH_TOKEN value to a network destination beyond the local claude CLI's own authentication?
Data exfiltration
Do the qwibitai/nanoclaw and nanocoai/nanoclaw match patterns in channels-remote.sh indicate two distribution origins, and which one actually serves the channels branch that callers fetch?
Supply chain
Which event names and properties do the setup callers pass to diagnostics emit(), and could workspace or conversation data reach the telemetry payload?
Data exfiltration
phEmit calls (step_started, step_completed, setup_aborted, step_stalled) are emitted throughout setup; the telemetry destination and payload are defined outside the shown units, so whether step metadata or anything user-supplied leaves the host is unconfirmed.
Data exfiltration
The detector leads pair code in these units with claim text ('Its `chat.db` reader (`@photon-ai/imessage-kit`) brings its own `better-sqlite3` 12.x…', 'The setup screens and step sequence do not change.') that does not appear in any shown unit, so the alleged claim-vs-behavior contradictions cannot be verified from this evidence.
promptValidator compiles a regex taken verbatim from the skill document (new RegExp(validate, flags)) and tests operator input against it; whether any shipped document supplies a regex with catastrophic backtracking is unconfirmed.
Destructive action
The PY-CLAIM-CONTRADICTION detector leads quote claims (e.g. 'The setup screens and step sequence do not change.') that do not appear in the shown unit text, so the claimed contradictions cannot be confirmed; the underlying file writes and execs were judged directly on their own content instead.
Does SetupClient actually transmit the hostname/cwd label and device identity off-host during register()/start(), or is the label used only for local journal locking?
Data exfiltration
The detector-cited claim 'The setup screens and step sequence do not change.' does not appear in any shown unit, so whether the observed file/credential writes genuinely contradict a stated invariant elsewhere in the artifact is unverified.
isValidGroupFolder, which gates the --folder value joined into groups/<folder>/CLAUDE.md before the writeFileSync, is not shown in these units; if it permits traversal, the rename write could target paths outside the intended group directory.
Persistence
cleanupUnhealthyPeers can unload and remove peer launchd/systemd registrations; its implementation is not in evidence — does it stop or delete services beyond this install's own labels?
Persistence
revokeSession in setup/registry.ts sends the registry bearer token to the broker URL read from the local auth file without the https-or-loopback check the credential helper applies — is the broker URL constrained to https at sign-in time?
Data exfiltration
The target skill is declared as adding a GitHub chat channel, but these setup units install host services, a docker credential helper, and registry authentication — is the broader NanoClaw setup scope intentional for this artifact?
Which call sites invoke AnchoredDir.open with create=true, writeNewFile/appendFile/replaceFile, or copyRegularFile, and can any of their roots or destination names reach agent configuration, rc files, launch configs, or paths outside the workspace?
Persistence
The PY-CLAIM-CONTRADICTION detector leads quote the claim 'The setup screens and step sequence do not change.' which does not appear anywhere in the cited unit SRC:6d888f2dada9ad4c; where is this claim made and does any setup flow actually contradict it via its writes?
Persistence
No unit shown implements or registers a GitHub channel despite the skill's declared purpose (the barrel lists /add-slack, /add-discord, /add-whatsapp but not /add-github); where is the GitHub channel module and how is it wired in?
Supply chain
What host actions do CellLink's onSnapshot/onChange/onForbidden callbacks trigger in the caller (the supervisor that may check on every cell update and may spawn the Slack worker)?
Code execution
The PY-CLAIM-CONTRADICTION detector leads (socket unlink/chmod, atomic key and lock file writes, Discord interaction callbacks, ps execFileSync, local socket connect) were verified against the cited excerpts and all show benign, locally-scoped operations or service-native API calls; confirm no hidden persistence exists outside these spans.
All PY-CLAIM-CONTRADICTION leads quote claim text ('The setup screens and step sequence do not change.', the chat.db/better-sqlite3 claim) that appears in none of the reviewed units, so the contradiction could not be confirmed or refuted from the shown evidence; the source document of those claims is unidentified.
The target is declared as a GitHub channel integration skill, but every reviewed unit implements Slack community-portal setup and container orchestration with no GitHub-related code, so the relationship between the declared purpose and the reviewed behavior is unsettled.
Who can set container_configs.packages_apt/packages_npm (is the install_packages path reachable by untrusted chat senders, or operator/admin-only)? This determines whether the unsanitized interpolation in buildAgentGroupImage is an injection chain or an admin-only footgun.
Code execution
src/db/compose.ts states a remote-backend skill replaces this file; which skill does so and does its replacement send central-DB data to a remote host?
Supply chain
Delivery action registration refuses disarming an existing guarded action but permits registering new actions with an explicit unguarded() declaration; can a skill-installed module register a privileged action name (e.g., an install_packages/add_mcp_server variant) without a guard, and does anything restrict which modules may register?
Privilege escalation
The skill declares GitHub-channel scope, but the shipped units are the host's full DB-migration, delivery, and session-driver layers; whether installation adds modules to an existing host install or replaces/overwrites it (with any data impact) is not established from these units.
initGroupFilesystem delegates writing .claude-shared/settings.json to prepareClaudeMemorySettings, whose content is not shown; confirm it writes no hooks, env injection, or permission relaxation into the managed Claude settings.
Persistence
initGroupFilesystem calls initializeProviderGroupSurfaces(providerHint, contract, group.id, groupDir), whose staged files and writes are not shown; confirm they stay inside the group and state directories.
Persistence
materializeTemplateSkills, removeEntry, and copyTree perform anchored recursive delete/copy whose safety depends on the AnchoredDir wrapper refusing symlinks and confining operations to open descriptors; the AnchoredDir implementation is not among the shown units.
Destructive action
The target is declared as the add-github GitHub-channel skill, but every owed unit is host-runtime code under src/ (drivers, egress-lockdown, guard, group, mailbox, host lifecycle); confirm which repository surface the skill actually ships and consumes.
Which module executes the `script` field of kind='task' rows (the scheduler/runner implied by 'script-skip:error (pre-task script crashed)' and 'handleRecurrence'), with what privileges and working directory, and can external/message-derived content reach that script field?
Code execution
The PY-CLAIM-CONTRADICTION leads cite claims ('The setup screens and step sequence do not change.', 'Its `chat.db` reader (`@photon-ai/imessage-kit`) brings its own `better-sqlite3` 12.x …') that appear in none of the shown units, and they map plain parameterized SQLite prepare/run on the artifact's own mailbox DBs to file_write/exec; do those claims exist in another file, and is any actual contradiction verifiable?
All detector leads (PY-CLAIM-CONTRADICTION) quote claim texts ('The setup screens and step sequence do not change.', 'Its `chat.db` reader (`@photon-ai/imessage-kit`) brings its own `better-sqlite3` 12.x...') that appear in no reviewed unit; which file carries those claims, and does any cited write or exec actually contradict a stated invariance (the cited operations are ordinary own-database UPDATE/INSERT/DELETE and settings reconciliation)?
Is the community-portal origin (local.origin from data/community-portal.json) validated or pinned to the operator's portal host before the install token, device key, and proofed ticket are transmitted to it, or could a tampered journal redirect credential material to an attacker-controlled host?
Data exfiltration
The PY-CLAIM-CONTRADICTION leads quote a claim that the chat.db reader (@photon-ai/imessage-kit) brings its own better-sqlite3 12.x, which appears in none of the shown units; which file contains that claim, and do the parameterized getDb().run() calls actually contradict it in a way that enables a harmful behavior?
The detector-cited claim texts (the @photon-ai/imessage-kit better-sqlite3 claim and 'The setup screens and step sequence do not change.') do not appear in the cited units, so the alleged claim contradictions cannot be verified from this pass.
The served units are host-application modules (permissions, scheduling, self-mod, typing, project-doc composition) that implement no GitHub channel integration, so whether they belong to the add-github skill's declared behavior cannot be settled from the units shown.
The PY-CLAIM-CONTRADICTION detector leads cite a claim 'The setup screens and step sequence do not change.' that does not appear in any reviewed unit; the flagged writes (writeAtomic temp-file writes, ensureDirectoryWithinRoot mkdir, dir.replaceFile, skillsDir.unlink) are provisioning operations confirmed present, but the document making the claim and whether the code actually contradicts it cannot be settled from the evidence shown.
Persistence
ensureDirectoryWithinRoot performs lexical-only containment and its comment states that symlinks placed in the state (operator relocation) are followed rather than rejected, while the state volumes are container-writable; whether a container-planted symlink could redirect host mkdir/file creation outside the volume before the AnchoredDir symlink refusals apply cannot be settled from the shown units.
Persistence
Whether agent-initiated template stamping (the create_agent delivery action) is gated by operator approval before the remote fetch and the workspace/MCP-config writes, as code comments imply but no gating code is shown.
Supply chain
The skill is declared as 'Add GitHub channel integration via Chat SDK', but the owed units are NanoClaw host-application core (template restamping, upgrade tripwire, webhook server, timezone, type docs, pinned image reference); whether this bundle legitimately constitutes the add-github skill is not established from the shown units.
The claim text quoted by the PY-CLAIM-CONTRADICTION detector leads ('The setup screens and step sequence do not change.') does not appear in any shown unit, so the alleged contradiction between documentation and the restamp file writes cannot be confirmed or refuted here; the file-write half of the leads is confirmed and reported.
The webhook server performs no authentication at the routing layer; whether inbound webhook requests are signature-verified before dispatch to Chat SDK adapters or raw handlers is not shown in these units.
[invalid file request] What does the /add-codex skill instruct at install time (files written, commands run, anything fetched from a remote URL), and does it declare running the codex CLI and vaulting OAuth tokens into the gateway (context for claims D14 and D21)?
Supply chain
[file request .claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.ts] Does the app-server request handler actually accept every server-to-client request unconditionally, and are approval_policy and sandbox_mode hardcoded to never/unrestricted with no user approval path?
Privilege escalation
[file request .claude/skills/add-codex/payload/container/agent-runner/src/providers/codex.ts] What exactly does this provider write into config.toml and hooks.json before each query, and do any generated hooks or config values grant the runtime agent capabilities beyond receiving and replying to messages?
Persistence
[file request .claude/skills/add-codex/payload/container/agent-runner/src/provider-contracts/codex.ts] What does the contract's beforeQuery write (config.toml/hooks.json) on each query, and does it register hooks or disable any safety or approval behavior?
Persistence
[file request .claude/skills/add-codex/payload/setup/providers/codex.ts] Where do the ChatGPT token or OpenAI API key collected by this auth step go — is anything sent off-host other than the declared gateway vault, and is the isolated CODEX_HOME credential destroyed on every exit path?
Credential access
[file request src/channels/github.ts] Does the GitHub adapter copied from the channels branch send any data beyond replying to webhook comment events, execute fetched code, or touch credential stores?
Data exfiltration
[file request src/channels/imessage.ts] Does the iMessage adapter read data beyond chat.db for the wired conversations and send data to any host besides the declared photon.codes line (local or hosted)?
Data exfiltration
[file request scripts/photon-setup.ts] What data does photon-setup.ts transmit to photon.codes during setup --phone and status, and what does it write locally to .env and data/photon-auth.json?
Data exfiltration
[file request setup/index.ts] What does setup/index.ts --step provider-auth codex execute end to end — which network destinations does it contact and where does it store the collected ChatGPT or OpenAI credential?
Credential access
[file request .claude/skills/add-imessage/scripts/photon-setup.ts] The iMessage docs instruct running this script as the setup wizard (device login, project provisioning, .env writes); do its network calls go only to the Photon dashboard/spectrum hosts and its writes only to .env and data/photon-auth.json?
Code execution
[file request setup/pair-telegram.ts] The Telegram skill spawns this step for the pairing handshake; what does it execute, send, and write while waiting for the 6-digit code?
Code execution
[file request setup/index.ts] The skills route secret writes through `setup/index.ts --step set-env`; does the set-env step only write the named .env key, and can the STEPS-map edit region load arbitrary modules?
Persistence
[file request setup/lib/restart.sh] Three skills run this restart script between install and pairing; does it only restart the NanoClaw service or does it perform other commands?
Code execution
[file request scripts/init-first-agent.ts] The Teams and Telegram skills instruct running this wiring script with owner ids and platform ids; what rows, files, or agent configuration does it write?
Persistence
[file request setup/channels/teams-manifest-build.ts] The Teams skill runs this script to build the sideload package (optionally with RSC permissions baked in); what goes into the zip and what does it write?
Code execution
[file request src/channels/slack.ts] This file is copied from the mutable channels branch by the add-slack Apply steps; does its content match the described adapter behavior and contain no extra network or persistence logic?
Supply chain
[file request container/skills/slack-formatting/SKILL.md] This container skill is synced into ~/.claude/skills during the Slack install; does its instruction text stay within mrkdwn formatting guidance without behavioral directives?
Agent hijacking
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill body itself instruct the agent to run repository scripts (e.g. container/build.sh, install-cli-tools.sh, scripts/upgrade-state.ts set, service restart) or otherwise steer beyond adding a GitHub channel integration, and does it contain trigger+action directives aimed at the agent?
Agent hijacking
[file request src/provisioning/slack-app.ts] What does the Slack provisioning core (fetched from the channels branch at setup time and dynamically imported) do with the registry install token, Slack tokens, and broker transport, and is any of it pinned to a commit?
Supply chain
[file request .claude/skills/add-github/SKILL.md] Which commands, git branches, and package installs does the add-github SKILL.md direct the agent to run, and does it copy adapter code from the channels branch or append registration imports outside the declared channel-install task?
Supply chain
[file request setup/lib/diagnostics.sh] Which telemetry events and fields does the bash emitter send to PostHog, and is the persistent install identifier joined with any other host or user-identifying data?
Data exfiltration
[file request scripts/init-first-agent.ts] What permissions does init-first-agent grant (owner role, cli_scope=global) and what does the /welcome system instruction it sends actually tell the deployed agent to do?
Privilege escalation
[file request .claude/skills/add-github/SKILL.md] The add-github SKILL.md is the instruction surface the setup directive engine and run-channel-skill driver consume but is not in this batch: what instructions, nc:run/nc:copy directives, auto-run steps, and claims (e.g. 'The setup screens and step sequence do not change.') does it contain?
Agent hijacking
[file request src/templates/library.ts] A detector lead cites host_config_write 'core.hooksPath=/dev/null' at line 56: which git repositories or paths get core.hooksPath pointed at /dev/null, under what trigger, and is the disabling of git hooks disclosed to the operator?
Persistence
[file request setup/channels/run-channel-skill.ts] What does runSkill('.claude/skills/add-<channel>') load and execute per channel (including add-github), which inputs are pre-supplied to the skill, and can its directives reach host exec?
Code execution
[file request setup/install-cred-helper.ts] What does the credential-helper installer write and execute (binary install location and PATH placement, shebang rewrite near line 244, run(process.argv) near line 433), and does it modify ~/.docker/config.json credHelpers?
Persistence
[file request .claude/skills/add-github/SKILL.md] The served units are host-repo comment surfaces; the skill body itself was not served. Does the add-github SKILL.md (frontmatter plus body) stay within adding the GitHub channel, or does it carry agent-steering directives, auto-run setup/prerequisite steps, or extra reads/sends (e.g. the nc:run effect:step binding syntax other channel skills embed in their SKILL.md)?
Agent hijacking
[file request setup/registry-login.ts] install-identity.ts states the registry sign-in owns ~/.config/nanoclaw/account.json and leads show registry-login.ts writing a token into registry-auth.json and calling requestDeviceAuthorization; what exactly does the sign-in write locally and send to the registry/broker?
Credential access
[file request setup/lib/restart.sh] A detector lead shows this script referencing Library/LaunchAgents/<label>.plist; what LaunchAgent does setup install and what program/arguments does it run?
Persistence
[file request src/container-runner.ts] Detector lead DET:06650a8ca40da939 flags line 1265 as a host_config_write of /workspace/agent/CLAUDE.md contradicting the claim 'The setup screens and step sequence do not change.' Show this region: does the code write agent instruction content to /workspace/agent/CLAUDE.md, under what condition, and with what content?
Persistence
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill body instruct the agent to pull modules from the `modules` branch, run pre-flight/setup scripts, or otherwise act beyond adding the GitHub channel integration?
Supply chain
[file request src/community-portal/device-client.ts] Does the DeviceClient transmit perk credentials, the account install token, or Slack install worker material to the portal cell, and to which host?
Data exfiltration
[file request src/upgrade-state.ts] What exact text does the startup tripwire (enforceUpgradeTripwire) write for the coding agent to act on automatically when the upgrade marker check fails?
Agent hijacking
[file request container/agent-runner/src/providers/claude-config.ts] Does this provider config disable the agent's permission prompts via bypassPermissions, and under what conditions is it set?
Privilege escalation
[file request container/CLAUDE.md] What standing instructions does the core-owned canonical instruction template (container/CLAUDE.md) give agents, and do any steer beyond the declared channel-integration task?
Agent hijacking
[file request src/templates/library.ts] What remote URL and ref does the template library clone use, and is fetched template content (whose persona becomes system-prompt instructions) pinned to an immutable commit?
Supply chain
[file request src/drivers/index.ts] Does the agent-facing text near line 21 ('silently run') instruct the agent to act without the user's knowledge, or does it describe quiet/non-logging process execution unrelated to secrecy from the user?
Agent hijacking
[file request setup/registry/credential-helper.mjs] Does the agent-facing text near line 110 ('silently read') instruct credential access hidden from the user, or is it ordinary quiet file reading within the helper's declared purpose?
Agent hijacking
[file request setup/install-claude.sh] Does setup/install-claude.sh fetch remote content with curl and pipe it directly to bash, and is it invoked as an auto-run setup step by any agent-facing instruction in this artifact?
Code execution
[file request .claude/skills/add-github/SKILL.md] The target skill's instruction surface (frontmatter and SKILL.md body) was not included in this batch. What instructions does it give the agent, and does any of it steer beyond the declared task 'Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations.' (e.g., auto-run prerequisite scripts such as setup/install-github.sh, overrides of agent behavior, secrecy, or hidden directives)?
Agent hijacking
[file request container/agent-runner/src/memory/hook.ts] The payload writes a SessionStart hook running 'bun /app/src/memory/hook.ts' into ~/.codex/hooks.json on every query; what does that hook execute at session start, and does it read credentials or send data off-host?
Code execution
[file request .claude/skills/add-codex/payload/setup/providers/codex.ts] The skill instructs running 'pnpm exec tsx setup/index.ts --step provider-auth codex' to land a ChatGPT token or OpenAI API key in the gateway vault; does this setup provider send the credential anywhere besides the declared vault, and what does it read?
Credential access
[file request .claude/skills/add-codex/payload/container/agent-runner/src/providers/codex.ts] Where is attachCodexAutoApproval wired into the live CodexProvider query path, and does the provider transmit anything beyond the local codex app-server stdio channel?
Privilege escalation
[file request .claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.ts] What does attachCodexAutoApproval configure on the spawned codex app-server (does it disable or widen codex approval/sandbox safety prompts), and where and with what contents does writeCodexConfigToml write config.toml and hooks.json?
Privilege escalation
[file request .claude/skills/add-codex/payload/setup/gateways/credential-store.js] Where does getCredentialStore persist the vaulted codex credentials (the OAuth auth.json file handed to store.save and the pasted API key value) — a local vault only, or any remote/network destination?
Data exfiltration
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill declare, reference, or ship the add-codex payload — every unit in this batch is Codex provider setup code under .claude/skills/add-codex while the target's declared description covers only GitHub channel integration?
Supply chain
[file request .claude/skills/add-codex/payload/container/src/memory/hook.ts] What does the codex memory session hook (registered in hooks.json to run as 'bun /app/src/memory/hook.ts' on startup/clear/compact) execute, and does it send conversation or memory data off-host?
Data exfiltration
[file request setup/lib/restart.sh] The Discord skill instructs running this script to restart the host service; what does it execute beyond the restart (env writes, network calls, persistence)?
Code execution
[file request setup/lib/install-slug.sh] The GitHub skill sources this script before launchctl/systemctl restarts; what does it define and execute?
Code execution
[file request setup/channels/imessage-configure.sh] The iMessage skill runs this configure script with argument 'local'; what does it write or remove in .env and what else does it do?
Persistence
[file request src/channels/github.ts] The add-github skill copies this adapter from the channels branch into core; which hosts does it contact and how do GITHUB_TOKEN and GITHUB_WEBHOOK_SECRET flow through it?
Data exfiltration
[file request src/channels/discord.ts] The add-discord skill copies this adapter from the channels branch into core; which hosts does it contact and how does DISCORD_BOT_TOKEN flow through it?
Data exfiltration
[file request src/channels/imessage.ts] The add-imessage skill copies this adapter from the channels branch into core; which hosts does it contact (photon.codes gRPC, chat.db access) and what credentials does it handle?
Data exfiltration
[file request .claude/skills/add-codex/payload/container/AGENTS.md] This base document is composed into every codex group's AGENTS.md as core-owned instruction canon; what instructions does it give the agent?
Agent hijacking
[file request scripts/photon-setup.ts] Does photon-setup.ts communicate only with the declared Photon hosts (app.photon.codes / spectrum.photon.codes), and where does it write PHOTON_PROJECT_SECRET and the cached device-login bearer token?
Credential access
[file request setup/channels/imessage-configure.sh] What does imessage-configure.sh write to .env or other configuration when invoked with 'hosted'?
Persistence
[file request setup/lib/restart.sh] What does restart.sh restart, and does it modify any files or configuration beyond restarting the service?
Code execution
[file request scripts/init-first-agent.ts] What files or control-plane state does init-first-agent.ts write when given the channel, owner user id, platform id, display name, agent name, and role arguments?
Persistence
[file request setup/channels/teams-manifest-build.ts] Does teams-manifest-build.ts only build the local app-package zip from the provided app id and URL, writing to data/teams/?
Code execution
[file request scripts/q.ts] Does scripts/q.ts only execute the supplied SQL query against the sqlite database file passed as an argument?
Code execution
[file request .claude/skills/telegram-multi-instance/SKILL.md] The add-telegram skill cites this file as the reference for multi-instance tokens (TELEGRAM_INSTANCES / TELEGRAM_BOT_TOKEN_<NAME>) — what behaviors does it instruct, and does any exceed multi-instance Telegram configuration?
Persistence
[file request setup/lib/restart.sh] What does the restart script executed by the add-telegram Restart and troubleshooting steps actually do — which processes does it restart and what files or configs does it touch?
Code execution
[file request setup/channels/teams-manifest-build.ts] What does this manifest build script (run with --rsc and --url by the add-teams skill) generate and write, and does it contact anything over the network?
Persistence
[file request setup/index.ts] How do the set-env and pair-telegram steps invoked with bot-token secrets on the command line store and log those secrets, and do they perform any action beyond the documented .env writes and pairing handshake?
Credential access
[file request container/agent-runner/src/provider-contracts/claude.ts] How does the runtime contract wire history.readTrace (backed by newestClaudeTranscript) into /upload-trace, and does that path send transcript contents off-host or only surface them locally?
Data exfiltration
[file request container/agent-runner/src/memory/hook.ts] The registered session-start hook runs 'bun /app/src/memory/hook.ts'; what does that script read and emit when invoked, and does it touch anything outside /workspace/agent/memory?
Reconnaissance
[file request scripts/upgrade-state.ts] What does `upgrade-state.ts set` write, where, and does it validate anything about the install state before stamping the checkout as updated through a trusted path?
Persistence
[file request docker-credential-nanoclaw] Where does the docker-credential-nanoclaw helper send the registry credential it mints, and how do NANOCLAW_PULL_NONCE and NANOCLAW_PULL_REF gate it?
Data exfiltration
[file request setup/lib/install-slug.sh] setup/lib/install-slug.sh is sourced by container/build.sh and container/pull.sh — does it only derive the image slug name, or does it perform any other actions?
Code execution
[file request container/skills/welcome/addenda/github.md] Does the GitHub channel welcome addendum that the channel skill drops and that the agent is instructed to read first contain instructions beyond welcome customization?
Agent hijacking
[file request scripts/skill-apply.ts] What do the nc:run directives (dep install, run, branch-fetch, effect:step) actually execute, from where is from-branch registry content fetched, and what files/env values does the mutate phase write?
Supply chain
[file request scripts/git-fetch-branch.ts] How are the remote and ref for a from-branch registry fetch resolved, and is the fetched content pinned to an immutable commit or taken from a mutable branch head?
Supply chain
[file request scripts/skill-apply.ts] Where are gitFetchBranchCommand and gitShowToFileCommand defined and what exact shell commands do they construct from directive-supplied remote/branch/src/dest values (any quoting or injection risk)?
Code execution
[file request scripts/skill-directives.ts] How do parseDirectives/validate parse nc: fences and which attributes (from-branch, manager, run bodies, capture, remove) are permitted — the install surface the apply engine executes?
Supply chain
[file request .claude/skills/add-codex/SKILL.md] Do add-codex's directives append into the nanoclaw:setup-steps marker of setup/index.ts or set a default-channel .env key — which would contradict claims D14 ('The setup screens and step sequence do not change.') and D21 (default stays claude), or are the C71-C95 leads over-broad?
Persistence
[file request .claude/skills/add-github/SKILL.md] Which nc: directives does add-github's SKILL.md use — any from-branch copies, dep installs, runs, env-set or json-merge targets — and do all of them serve the declared GitHub channel integration (deciding necessary vs unexplained for the from-branch SUPPLY risk)?
Supply chain
[file request scripts/skill-apply.ts] During refresh, what does applySkill execute for nc:dep and nc:run directives (arbitrary shell bodies from SKILL.md? package-manager lifecycle/build scripts?), and does it fetch or apply content from the registry remote supplied by resolveRemote? This is needed to adjudicate contradiction C577 against claim D59 and to size the SUPPLY surface of the refresh path.
Code execution
[file request setup/lib/diagnostics.ts] Where does phEmit send setup events (phEmit('auto_started'), 'existing_install_detected', setupLog.userInput values) — local log only or a network endpoint — and with which fields? This determines whether the setup wizard telemetry is an EXFIL concern.
Data exfiltration
[file request scripts/provider-contract-verifier.ts] Does pinnedBunVersion return an exact pinned bun version string used in the `pnpm --package=bun@<version> dlx bun` fallback built by portableDependencyCommand, i.e. is the dlx-fetched bun pinned rather than latest?
Supply chain
[file request setup/auto.ts] Which imported module provides phEmit, and what URL or destination does it post telemetry events to?
Data exfiltration
[file request setup/templates.ts] Where does cloneRegistry clone the template library from, is the ref pinned, and what does ensureTemplateLocal copy into templates/?
Supply chain
[file request scripts/registry-login.sh] What does the registry login script run — which endpoints does it contact and what identity data does it record or send during the device-flow login?
Code execution
[file request setup/lib/skill-driver.ts] What does runSkill execute when applying a skill — which commands, file writes, env changes, or network calls can a SKILL.md trigger?
Code execution
[file request src/community-portal/slack-job.ts] Which network endpoints do launchSlackJob, readSlackJob and queueSlackJob contact and what data do they send or fetch?
Data exfiltration
[file request setup/channels/slack-auto-register.ts] What does the Slack auto-provision pre-step read, write, or send (credentials, tokens, network calls)?
Credential access
[file request setup/channels/telegram-pre-step.ts] What does the Telegram pre-step read, write, or send (bot tokens, network calls)?
Credential access
[file request setup/lib/registry-state.ts] What command does REGISTRY_LOGIN_SCRIPT name, and what do readInstallToken, readRegistryAccount, and loginScriptAvailable read or send (credential paths, network endpoints)?
Credential access
[file request setup/install-docker.sh] What does this auto-run installer download and execute, and which sudo operations and endpoints does it use?
Code execution
[file request scripts/init-cli-agent.ts] What side effects and network calls does init-cli-agent.ts perform when the cli-agent step runs it via pnpm exec tsx?
Code execution
[file request container/pull.sh] Which registry and image references does pull.sh pull from, and are the pinned digests verified after pull?
Supply chain
[file request scripts/git-fetch-branch.ts] What exact git fetch command (refspec, remote handling) does gitFetchBranchCommand build for the channels-branch bootstrap?
Supply chain
[file request setup/channels/companions.ts] Does applyCompanionSkills apply companion skill payloads only from the local checkout, and do any registered pre-steps write files or fetch remotely?
Supply chain
[file request setup/portal.ts] What data do runSlackPortal and the queued Slack background job send to the portal/broker service, and where is queueSlackJob state written?
Data exfiltration
[file request src/community-portal/slack-job.ts] What do withSetupLock and launchSlackJob do on every setup run — do they contact any network endpoint, and is any local data sent off-host?
Data exfiltration
[file request setup/registry/credential-helper.mjs] What does the docker-credential-nanoclaw helper do with the registry credentials docker passes to it on stdin (get/store/erase) — does it ever transmit them anywhere off-host?
Credential access
[file request setup/register-claude-token.sh] How are the pasted Claude OAuth/API credentials handled in this script — are they stored locally only, or transmitted anywhere besides the vendor authentication flow?
Credential access
[file request setup/install-claude.sh] What does setup/install-claude.sh download and execute, and from which URLs or registries, when ensureClaudeReady runs it after the default-yes confirm?
Code execution
[file request setup/run-suggested.sh] How does run-suggested.sh execute the Claude-suggested command — does it display, allow editing, confirm, or log the command before running it?
Code execution
[file request scripts/register-claude-token.sh] Does register-claude-token.sh (referenced as the same approach as the PTY token capture) persist the captured Claude OAuth token anywhere beyond the process environment, and where?
Credential access
[file request setup/lib/diagnostics.sh] Which events and properties does the bash half of diagnostics send to PostHog, and does anything user-identifying beyond the install UUID leave the host?
Data exfiltration
[file request container/build.sh] What does container/build.sh execute and fetch during the agent container image rebuild spawned by buildContainerImage?
Code execution
[file request scripts/skill-apply.ts] When applying an add-* channel skill (e.g. add-github), does skill-apply.ts emit PostHog telemetry or make other network calls beyond installing the skill files?
Data exfiltration
[file request README.md] Do any user-facing repository docs disclose the PostHog telemetry and the NANOCLAW_NO_DIAGNOSTICS opt-out, bearing on whether the telemetry is concealed or merely unexplained?
Data exfiltration
[file request container/release-image.sh] readReleaseImage executes this script via spawnSync('bash', [script]); does it fetch anything from a remote host or only read a locally cached list, and from where does the published image reference come?
Supply chain
[file request setup/registry-login.ts] What does the registry sign-in driver send to the broker during the device flow and exactly which credential files does it write (account.json, registry-auth.json)?
Credential access
[file request setup/install-cred-helper.ts] Which credential-helper binary does this module install, from where is it obtained, and what does it write into docker's config (credHelpers pointer)?
Persistence
[file request setup/lib/claude-handoff.ts] What does offerClaudeOnFailure execute and what local data (raw log paths, logs, environment) does it pass to the spawned Claude process?
Code execution
[file request setup/lib/diagnostics.ts] Where do the phEmit diagnostics events (step_started, step_completed, setup_aborted) go — a local log only or a network endpoint, and if network, which host?
Data exfiltration
[file request setup/lib/host-status.mjs] What do host-status.mjs's snapshot and wait subcommands do — purely local process/socket checks, or any network calls to a remote host?
Code execution
[file request setup/lib/setup-commit.ts] How are the skill-apply commits created — is --no-verify or another hooks/signing bypass used, is repo-scoped git config written, and how is the upgrade-state tripwire marker rewritten for the new HEAD?
Persistence
[file request container/pull.sh] Does pull.sh only pull the digest-pinned reference resolved from env/.env/versions.json, or does any default path pull an unpinned or latest tag from a registry?
Supply chain
[file request setup/lib/channels-remote.sh] skill-driver.ts sources this script and runs resolve_channels_remote to resolve a fork-aware registry-branch remote: what remote/URL does it return, and does the script perform network access, writes, or anything beyond resolving a git remote?
Supply chain
[file request setup/lib/upgrade-state.ts] commitSetupChanges calls writeUpgradeState to rewrite the startup-tripwire marker after its commit moves HEAD: where does writeUpgradeState write, and does it modify anything outside the project checkout?
Persistence
[file request scripts/skill-apply.ts] What directives can the skill-apply engine execute when applying a SKILL.md in-process (shell runs, file copies, from-branch remote copies), and are remote copies pinned?
Code execution
[file request setup/lib/channels-remote.sh] What does resolve_channels_remote do — which git remotes does it read or add (auto-add-upstream fallback), and what does it return?
Supply chain
[file request setup/install-cred-helper.ts] Which host files does installCredentialHelper write or modify (docker config.json credHelpers, bin directories)?
Persistence
[file request scripts/update-skills.ts] What commands does portableDependencyCommand build for skill dependency requests, and does it ever redirect registry/index URLs or install unpinned versions?
Supply chain
[file request setup/portal.ts] What identity or telemetry does portalClient send to the portal, and what is its default base URL?
Data exfiltration
[file request container/pull.sh] What registry URL and image reference does container/pull.sh fetch, and is the reference digest-pinned or mutable-tag-pinned?
Supply chain
[file request setup/install-cred-helper.ts] Which host files and directories do installCredentialHelper and uninstallCredentialHelper write or remove (docker config.json credHelpers, PATH locations, helper binary payload)?
Persistence
[file request setup/lib/registry-state.ts] What does writeImageSource write and where, and where does the agent image pin (versions.json / AGENT_IMAGE_PIN) point?
Supply chain
[file request setup/registry-login.ts] What are the values of DEFAULT_BROKER_URL, DEFAULT_DEVICE_ENDPOINT, DEFAULT_TOKEN_ENDPOINT, the file constants HOST_ID_FILE/ACCOUNT_FILE/REGISTRY_AUTH_FILE, and the ENV key names?
Data exfiltration
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill instruct the agent to run the shared setup steps (service install, set-env, registry sign-in, run-suggested.sh) and does it declare service installation, broker network contact, or the eval wrapper?
Persistence
[file request setup/peer-cleanup.js] Does cleanupUnhealthyPeers unload or delete other NanoClaw installs' launchd/systemd services, and under what condition?
Persistence
[file request setup/register-claude-token.sh] Does this caller pattern obtain explicit user confirmation of the suggested command before invoking run-suggested.sh?
Code execution
[file request setup/registry.ts] Where does sign-in write the broker base URL (auth.api/broker_url) into registry-auth.json, and is it a fixed vendor domain?
Data exfiltration
[file request setup/install-cred-helper.ts] How does the installer wire the ~/.docker/config.json credHelpers entry and place the credential helper on PATH, and does it modify any other docker configuration?
Credential access
[file request SKILL.md] Does add-github's SKILL.md declare or invoke this setup/uninstall harness (signal-auth, slack-worker, timezone, uninstall, verify steps), or is the harness shipped only for sibling channel skills — establishing which of these capabilities the declared purpose covers?
Code execution
[file request setup/channels/run-channel-skill.js] What does runChannelSkill('slack', ...) execute with the bot_token/app_token inputs, and does it write settings or contact hosts beyond the Slack workspace?
Code execution
[file request src/community-portal/slack-job.js] Where does slackProgressClient send its POST /api/v1/device/slack reports (what base URL/config), and what does readSlackJob read into the job including any secrets?
Data exfiltration
[file request src/community-portal/index.js] What do writePrivate and processLock write, where, and with what permissions, given the Slack job file stores a bot token?
Credential access
[file request setup/lib/diagnostics.js] Does the phEmit telemetry ('uninstall_started'/'uninstall_executed') send data off-host, and to what destination and with what fields?
Data exfiltration
[file request setup/status.ts] Where does emitStatus deliver its status blocks (stdout-only structured blocks, or any socket/HTTP/file destination), and can the VERIFY/WHATSAPP_AUTH payloads — which include channel-auth status names and phone numbers — reach anywhere off-host?
Data exfiltration
[file request setup/service.ts] Do the service helpers referenced by verify.ts (getServiceManager, getLaunchdLabel, getSystemdUnit, setupNohupFallback) install launchd/systemd/nohup persistence for the host, and is that persistence part of the skill's declared setup flow?
Persistence
[file request .claude/skills/add-github/SKILL.md] Which channel modules, branches, and network endpoints does the add-github skill instruct the agent to install, copy, or wire, and does it reference the Discord bridge or the community-portal client?
Data exfiltration
[file request src/community-portal/setup-client.ts] Does the portal setup client transmit any additional host data to the portal beyond the device registration and cell-ticket calls shown in device-client.ts?
Data exfiltration
[file request setup/slack-worker.ts] The detached worker spawned by launchSlackJob runs this file with the full inherited environment; does it confine itself to completing the Slack app installation against the saved job's origin, or does it read credentials, send data elsewhere, or execute anything beyond that?
Code execution
[file request src/install-identity.ts] Does readInstallIdentity read only the NanoClaw install token and ids from the app's own account.json, or does it touch other credential material (ssh keys, browser stores, other env tokens)?
Credential access
[file request src/community-portal/device-client.ts] Do DeviceClient.request and save() send data only to the configured portal origin and persist identity only to the local journal file, or are there additional destinations?
Data exfiltration
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill's own documentation declare host environment access (process.env), per-group CLAUDE.md composition/mounting, or per-group image builds, and does its install procedure instruct modification of src/container-runner.ts or src/db files?
Persistence
[file request src/project-doc-compose.ts] What does composeGroupProjectDoc write into the composed project document and which instruction sources (group config, templates, user- or agent-editable files) are inlined into CLAUDE.md?
Persistence
[file request src/providers/registry.ts] Which provider host adapters consume context.hostEnv, and does any adapter copy credential values from the host environment into container env or transmit them off-host?
Credential access
[file request src/db/connection.ts] What do getDb and hasTable implement: does any central-DB access path route reads or writes to the optional remote `url` target declared on DbConfig, and if so to what destination? (Adjudication notes: contradiction leads C731-C758 against D59 were refuted — getDb().run / statement.run are local SQL execution, not dependency build scripts, and do not contradict the imessage-kit chat.db claim; C257-C262 against D14/D21 were refuted — db.prepare and schema migra⟦… 195 more chars …⟧
Data exfiltration
[file request src/delivery.ts] Show the inlined SQL of the channel delivery permission check: is permission to send to a non-origin channel granted to all sessions whenever the agent_destinations table is missing, and are origin-chat sends always allowed, exactly as the comments state?
Privilege escalation
[file request .claude/skills/add-github/SKILL.md] Which files does the add-github skill instruct the agent to create or edit, does it run install scripts, fetch remote code, or register module migrations, and is all of that limited to adding a GitHub channel adapter per the declared purpose?
Supply chain
[file request src/drivers/docker-driver.ts] Does DockerSessionDriver.prepare(spec) perform any host file writes (contradiction lead C267 alleges file_write '<dynamic>' via prepare) that could alter the add-codex setup screens or step sequence, contradicting claims D14/D21?
Persistence
[file request src/env.ts] Does readEnvFile read only the keys passed to it (here the SETTINGS allowlist) or the entire .env file, to scope residue items R34-R36 (env access) correctly?
Credential access
[file request src/migrate-claude-memory-settings.ts] What does prepareClaudeMemorySettings create or reconcile in the group's .claude-shared/settings.json — does it add hooks, env, permissions, or other agent control-plane keys beyond Claude memory settings?
Persistence
[file request src/gateway-providers/installed.ts] Beyond the shown doc comment, which gateway provider modules does this barrel import and register at load time, and do any of them perform side effects beyond registerGatewayProvider?
Supply chain
[file request src/compact-instructions.ts] What does the PreCompact hook script bun /app/src/compact-instructions.ts do when it runs inside the agent runtime?
Code execution
[file request src/community-portal/slack-job.ts] What does launchSlackJob execute when it resumes the saved Slack install worker, and does it fetch or run remote or unpinned code?
Code execution
[file request src/community-portal/index.ts] Where do DeviceClient and CellLink connect (origin handling), and what identity, credential, or journal data do ticket and reconcile requests send off-host?
Data exfiltration
[file request src/modules/agent-to-agent/templates.ts] Does ensureTemplateLocal pin template downloads to an immutable commit and fetch only from the project's official template source?
Supply chain
[file request src/modules/self-mod/index.ts] The modules barrel imports './self-mod/index.js' and binds registerApprovalHandler/requestApproval before it loads — what does the self-mod module register at import time, and does it write agent configuration, hooks, settings, or its own source (persistence/privilege surface)?
Persistence
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill instruct pulling module code from the `modules` branch or run setup/pre-flight scripts, and is that consistent with its declared purpose of adding a GitHub channel via the Chat SDK?
Supply chain
[file request .claude/skills/add-github/SKILL.md] What does the add-github skill actually instruct and reference? None of the sampled src/ units in this batch implement any GitHub-specific behavior, so the declared purpose's implementation and its relationship to the shipped host runtime (self-mod installs, CLAUDE.md composition, scheduling) are unverified.
Supply chain
[file request .claude/skills/add-codex/SKILL.md] What scope does the claim 'The setup screens and step sequence do not change.' (line 42, D14) cover? The observed file writes in src/modules/scheduling/run-log.ts and src/project-doc-compose.ts were flagged as contradicting it, but they appear to be runtime task-log and project-document writes outside any setup flow; confirm from the claim's context.
Persistence
[file request src/provider-contracts/file-transformers.ts] What do the registered provider file transformers do to an existing provider settings file when initializeFile reconciles it and replaces its content, and is any of that content agent-facing instruction material?
Manipulation
[file request src/group-skills.ts] What files does materializeTemplateSkills write into the provider skill backing when templateCopies is 'copy', and where does its template content come from?
Persistence
[file request src/templates/library.ts] What does the library fetch/clone implementation past line 50 actually execute (git clone URL/branch, whether the clone is pinned to a recorded commit before use), and is fetched template content only copied as data or ever executed or applied as live agent instructions host-side?
Supply chain
[file request src/config.ts] What are the values of LIBRARY_REPO, LIBRARY_BRANCH, INDEX_URL, and TEMPLATES_DIR, and is the template library pinned to a commit or tag rather than a mutable branch (relevant to the SUPPLY residue around the clone and index fetch)?
Supply chain
[file request scripts/upgrade-state.ts] The tripwire message instructs the coding agent to run 'pnpm exec tsx scripts/upgrade-state.ts set' to clear the boot stop — does that script only call writeUpgradeState to write the data/upgrade-state.json marker, or does it perform other actions (exec, network, config writes)?
Persistence
[file request setup/index.ts] What does the provider-auth step run by the add-codex skill do with the user's ChatGPT/OpenAI credential — where is it stored and is it sent anywhere besides the selected gateway vault?
Credential access
[file request container/build.sh] What does the build script executed by the add-codex skill's build step run — any network fetch or code execution beyond a local pnpm/docker build?
Code execution
[file request .claude/skills/add-github/SKILL.md] Only the frontmatter of the target add-github skill is shown; what commands and file operations does the rest of the skill instruct the agent to run?
Code execution
[file request .claude/skills/add-codex/payload/setup/providers/codex.ts] How does the payload's setup provider handle the user's OpenAI credential (browser login, device pairing, API key) and where does it store or send it?
Credential access
[file request container/agent-runner/src/memory/hook.ts] What does the SessionStart hook command 'bun /app/src/memory/hook.ts' registered into ~/.codex/hooks.json execute at session start?
Persistence
[file request container/cli-tools.json] Does the global CLI manifest contain only pinned official entries such as @openai/codex, or any registry redirection or additional packages contributed by this skill?
Supply chain
[file request .claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.ts] What are the values of CODEX_APP_SERVER_ARGS, CODEX_SANDBOX_MODE and CODEX_APPROVAL_POLICY (tests expect --dangerously-bypass-hook-trust, danger-full-access and never)?
Privilege escalation
[file request src/channels/github.ts] What does the GitHub channel adapter copied from the `channels` branch actually do: network destinations, command execution, credential access, or data sent off-host beyond webhook processing?
Data exfiltration
[file request src/channels/discord.ts] What does the Discord channel adapter copied from the `channels` branch actually do: network destinations, command execution, credential access, or data sent off-host beyond message delivery?
Data exfiltration
[file request setup/lib/restart.sh] What commands does setup/lib/restart.sh execute when the skill runs it to restart the service after installing the adapter and credentials?
Code execution
[file request setup/lib/install-slug.sh] What does sourcing setup/lib/install-slug.sh set or execute before the launchctl/systemctl restart commands in the remove flow?
Code execution
[file request container/pull.sh] build.sh hands off to pull.sh to acquire the agent image from a registry and retag it to the local tag; which registry/URL and tag or digest does pull.sh pull from, and how does it verify the image against the agent-runner lock label it is said to check?
Supply chain
[file request src/providers/claude.ts] The container claude-config says the memory session hook is file-carried via settings.json; where does the host-side claude provider write that SessionStart hook into Claude settings.json, and exactly what command/content does the written hook contain?
Persistence
[file request scripts/upgrade-state.ts] What does the `set` subcommand write, to which path, and does it clear the startup exact-code tripwire so the host restarts unconditionally?
Persistence
[file request container/release-image.sh] Which remote does `--fetch` contact, is the returned image reference digest-pinned, and can the fetched agent-images.json redirect the docker pull to an attacker-chosen reference?
Supply chain
[file request container/cli-tools.json] Which CLI tools and exact versions are committed, and does any entry set onlyBuilt:true (enabling postinstall build-script execution during the root pnpm install)?
Code execution
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill instruct the agent to append entries to cli-tools.json or to run container/install-cli-tools.sh, and with which package name/version specs?
Code execution
[file request scripts/photon-setup.ts] Where do loadAuth and saveAuth persist the Photon access token, project id, and phone number (exact file path or store), and what default dashboardHost/spectrumHost values do the args use?
Credential access
[file request scripts/q.ts] How does the q.ts wrapper route the canonical DB path through the configured driver — which driver is used, can the canonical data/v2.db path be redirected to a remote composition, and does any query text or DB content leave the machine?
Data exfiltration
[file request scripts/skill-apply.ts] What exact shell commands do gitFetchBranchCommand and gitShowToFileCommand construct, and are the remote, branch, and file-path values taken from skill directives shell-escaped before exec?
Supply chain
[file request setup/registry-login.sh] The setup image-source flow runs this bundled bash script via runInheritScript('bash', [REGISTRY_LOGIN_SCRIPT]) when the user picks the pre-built image: does it only perform a device-flow authentication against the NanoClaw registry, or does it also read local files/env tokens or send data beyond the login?
Credential access
[file request scripts/skill-apply.ts] How are nc:run directive bodies executed (shell string vs argv array), and can {{var}} substitution from prompt-captured or captured-stdout values introduce command injection when the body reaches execSync?
Code execution
[file request setup/lib/skill-driver.ts] How does runSkill apply a SKILL.md — does it execute fence commands as shell, write files, or fetch remote payloads — and what do resolveRemote/reuse do with credentials?
Code execution
[file request scripts/init-first-agent.ts] What identity and authority changes does init-first-agent make (owner role, cli_scope=global, messaging wiring, /welcome instruction) from its argv inputs?
Privilege escalation
[file request setup/registry-login.ts] What does the registry login driver run, send, and store (device-flow endpoints, credential storage, image-source side effect, --require-verified/--force handling)?
Credential access
[file request setup/lib/restart.sh] What does restart.sh restart or execute on the host after companion skills are applied?
Code execution
[file request setup/auto.ts] What does resolveTimezoneViaClaude do with the operator's free-text location — does it invoke the Claude CLI and transmit the text off-host?
Data exfiltration
[file request setup/container.ts] Do the unshown portions of the container step run usermod/-aG, pull.sh, or build.sh, and from where are image bytes and build scripts obtained?
Code execution
[file request container/pull.sh] Does container/pull.sh fetch only digest-pinned image bytes from the configured registry and run nothing beyond docker pull/retag?
Code execution
[file request setup/registry/credential-helper.mjs] What does the docker-credential-nanoclaw helper do with the credential payloads docker sends it (get/store/list/erase), and does it transmit any secret off-host?
Credential access
[file request .claude/skills/add-github/scripts/auth.ts] How does the gateway auth flow obtain, store, and transmit the GitHub/bot token — is any credential sent to an endpoint other than the provider?
Credential access
[file request setup/register-claude-token.sh] How does register-claude-token.sh handle the Claude OAuth/API token after install-claude.sh runs, and where is it stored or sent?
Credential access
[file request src/channels/github.ts] Does the installed GitHub channel adapter send conversation or workspace data only to the GitHub API, or to any other host?
Data exfiltration
[file request setup/auto.ts] Does the automated setup driver run the install scripts (install-docker.sh, install-node.sh, install-claude.sh, install-github.sh) without per-step user confirmation?
Code execution
[file request setup/install-claude.sh] What does this installer download, from which URLs, and what does it execute or write on the host?
Code execution
[file request setup/run-suggested.sh] How does this script handle the suggested command before executing it (editor pre-fill, confirmation, or raw exec)?
Code execution
[file request setup/lib/diagnostics.ts] What are the values of POSTHOG_URL and POSTHOG_KEY?
Data exfiltration
[file request setup/registry-login.ts] Which broker endpoint does the registry sign-in contact and what does it store or send with the minted token?
Credential access
[file request container/build.sh] What does the container image build fetch and run, and from which registries?
Code execution
[file request setup/lib/host-status.mjs] What host state does the snapshot command read and does it send anything off-host?
Reconnaissance
[file request .claude/skills/add-github/SKILL.md] Which nc:run, nc:env-set, and nc:prompt directives does the add-github skill declare, and do any run commands fetch remote content, touch credentials beyond the channel token, or send data off-host?
Code execution
[file request setup/lib/channels-remote.sh] What do source and resolve_channels_remote execute here — does the resolver fetch code, configuration, or instructions from a remote branch or registry and act on them?
Supply chain
[file request setup/lib/ph.ts] Where does phEmit send its events (endpoint, auth, payload), and can step names, prompt answers, or credentials reach that sink?
Data exfiltration
[file request setup/lib/claude-assist.ts] What do offerClaudeOnFailure and offerClaudeHandoff execute and transmit — which files or raw logs are handed to the interactive Claude session, and can proposed commands run without a further user confirmation?
Code execution
[file request scripts/skill-apply.ts] How are {{var}} prompt inputs interpolated into nc:run commands and where do nc:env-set writes land — can a document directive move a bound .env credential into a command, log, or remote call?
Code execution
[file request setup/lib/browser.ts] What does openUrl invoke to open URLs and is any URL validation applied before launch?
Code execution
[file request setup/lib/channels-remote.sh] What does resolve_channels_remote execute or fetch, and does it add, trust, or modify git remotes or branches that later supply executed code?
Supply chain
[file request src/channels/dial-pairing.ts] What does the dial-pairing module imported and executed at runtime by setup/pair-dial.ts do, and does it contain network calls, persistence, or credential access?
Code execution
[file request scripts/skill-apply.ts] How does the directive engine construct the exec commands passed to applyProviderSkill's execSync callback, and can SKILL.md content inject arbitrary commands into them?
Code execution
[file request src/channels/telegram-pairing.ts] What does the telegram-pairing module, described as copied in from the `channels` branch by /add-telegram, do at runtime, and is it pinned to a commit?
Code execution
[file request setup/auto.ts] What does the apply() callback passed to runImagePortal download and install when the portal chooses the 'hardened' image source, and is the fetched image pinned by digest?
Supply chain
[file request setup/portal.ts] What does portal.ts import as openUrl, and is it the openBrowser implementation from setup/platform.ts that reaches execSync?
Code execution
[file request setup/auto.ts] What key/value pairs are passed to setupLog.userInput, and do any include provider tokens or secrets written in plaintext to logs/setup.log?
Credential access
[file request setup/install-cred-helper.ts] What does installCredentialHelper write (docker config.json credHelpers/credsStore entries, helper binary location) and is it reversible?
Persistence
[file request setup/lib/registry-state.ts] What is DEFAULT_BROKER_URL and which files do writeImageSource and readAgentImagePin read/write (for example .env)?
Persistence
[file request .claude/skills/add-github/SKILL.md] Does the skill instruct the agent to run setup/registry-login.sh, setup/register.ts, or other setup scripts, connecting the sign-in, credential persistence, and broker enrollment chain to the declared GitHub channel task?
Code execution
[file request setup/auto.ts] Does setup/auto.ts auto-run registry-login.sh, repair PATH, and write .env image-source state before the sign-in runs?
Persistence
[file request container/pull.sh] What does container/pull.sh execute — does it run docker pull only, or also build, run, source, or fetch anything else, and where does the pinned image reference point?
Code execution
[file request setup/registry-login.sh] What does the registry sign-in script run and write — does it flip the image source to the pinned registry, write registry-auth.json, and does it fetch code or instructions from a remote URL?
Persistence
[file request setup/install-cred-helper.ts] What does the credential-helper installer write — does it add a credHelpers entry to ~/.docker/config.json and copy the helper binary onto PATH, and how is it removed on logout?
Persistence
[file request SKILL.md] Locate the claim 'The setup screens and step sequence do not change.' and list what the setup flow writes or executes; does any write or dynamic path contradict that claim?
Persistence
[file request src/channels/github.ts] Does the GitHub channel module register a bridge inbound policy, membership handler, extractRawText, or transformOutboundText hook that drops, re-attributes, redirects messages, or sends data anywhere other than the declared GitHub channel?
Tool poisoning
[file request setup/slack-worker.ts] What commands and network calls does the detached Slack install worker run, and what does 'applies the Slack channel skill' write (files, imports, agent config)?
Code execution
[file request src/community-portal/slack-job.ts] How is the detached worker spawned (binary, arguments, env such as NANOCLAW_SETUP_LOCK) and which events (cell updates, supervisor checks, restart resume) trigger spawning?
Code execution
[file request .claude/skills/add-github/SKILL.md] What install steps does the skill instruct the agent to perform (copying channel modules from a branch, appending a self-registration import to src/channels/index.ts, fetching code, running setup scripts)?
Supply chain
[file request setup/slack-worker.ts] The detached worker spawned from this path receives a queued job containing Slack app/bot tokens and the account identity token; which network destinations does it contact and does it transmit those credentials off-host?
Data exfiltration
[file request src/community-portal/slack-job.ts] Define slackJobFile, writePrivate, DEFAULT_SLACK_SERVICE, APPROVAL_WINDOW_MS, and readInstallIdentity as used by this module: what file permissions protect the written job credentials and what default remote service do they target?
Credential access
[file request SKILL.md] Does the skill document contain the claims the contradiction leads quote ('The setup screens and step sequence do not change.' and the chat.db/better-sqlite3 claim), and does it instruct the agent to run Slack or community-portal setup steps?
Code execution
[file request src/device-client.ts] Where does DeviceClient send requests bearing the identity token, and is job.origin restricted to a known service host?
Data exfiltration
[file request src/container-runner.ts] Show the image-build code that appends packages to /root/.npmrc's pnpm build-script allowlist and confirm which packages get postinstall scripts enabled and in which image the scripts execute.
Supply chain
[file request src/group-skills.ts] What does syncSharedSkillLinks write into claudeDir, and does it link or copy anything from outside the managed container/skills directory?
Persistence
[file request .claude/skills/add-github/SKILL.md] Does the skill's install procedure write into the host application source tree (e.g., appending import lines to src/drivers/installed.ts or module barrels for boot-time registration) and does it document the NANOCLAW_RUNTIME_DRIVER / NANOCLAW_SESSION_MATERIAL_ROOT settings the drivers layer reads?
Persistence
[file request .claude/skills/add-github/SKILL.md] Where do the artifact's claims that its chat.db reader (@photon-ai/imessage-kit, better-sqlite3 12.x) is used and that 'the setup screens and step sequence do not change' appear, and does any shipped instruction direct the agent to read the host's iMessage chat.db or other credential-bearing stores?
Credential access
[file request src/session-manager.ts] Does readOutboxFiles confine the content-declared attachment paths to the sending session's outbox directory (rejecting path traversal) before the buffers are handed to the channel delivery adapter?
Data exfiltration
[file request src/scheduler.ts] Where is the executor for kind='task' messages_in rows' content.script (referenced via 'script-skip:error' and handleRecurrence), what commands/privileges does it use, and can message or API callers set or update the script value?
Code execution
[file request src/host-sweep.ts] Does the host sweep execute or retry task messages and process the 'script-skip:error' ack path (the MAX_TRIES path referenced by session-db comments), and does it trigger any script execution?
Code execution
[file request src/migrate-claude-memory-settings.ts] What exactly do CLAUDE_DEFAULT_SETTINGS and claudeSettingsTransformer.transform write into the Claude settings file, and does any branch add hooks, env, commands, or permissions rather than only remove the legacy NanoClaw memory hook?
Persistence
[file request src/modules/community-portal/slack-job.ts] Where are readSlackJob and launchSlackJob implemented and what commands or processes does the resumed Slack install worker execute on the host?
Code execution
[file request src/modules/community-portal/device-client.ts] Which endpoints does DeviceClient/CellLink contact and exactly what identity material (install token, device key, ticket) is transmitted to the configured origin, and is the origin validated?
Data exfiltration
[file request src/modules/agent-to-agent/templates.ts] Where does ensureTemplateLocal fetch templates from (URL/registry), is the fetched content pinned to a verified commit before use, and what does createAgentFromTemplate stamp into the new agent's scaffold and instructions?
Supply chain
[file request src/modules/agent-to-agent/guard.ts] Do the agents.create and a2a.send decisions implement the documented fail-closed holds, and is any caller path able to reach performCreateAgent or performAgentRoute without passing the guard?
Privilege escalation
[file request src/modules/self-mod/index.ts] What do the install_packages and add_mcp_server self-mod flows execute or write (package installers, MCP configuration), and are they guard/approval wrapped?
Code execution
[file request .claude/skills/add-github/SKILL.md] Does the add-github skill instruct fetching module code from the `modules` branch or another remote ref, is that ref pinned, and does it replace existing files such as src/modules/mailbox/compose.ts?
Supply chain
[file request src/config.ts] What is MOUNT_ALLOWLIST_PATH resolved to, and can it point inside the project root or any agent/container-writable directory, letting an agent edit its own mount allowlist?
Privilege escalation
[file request src/modules/slack-room-membership/index.ts] Under what conditions does the owner-presence channel-card interceptor auto-wire a channel without an approval card, and can a non-owner trigger it?
Privilege escalation
[file request src/container-runner.ts] How are scheduled task rows executed — is the `script` stored in a task's content run as shell code, and is that execution gated or sandboxed?
Code execution
[file request src/modules/approvals/index.ts] How are self-mod approval grants minted and replayed — can any path other than an authorized admin card-click reach `allow` for install_packages or add_mcp_server?
Privilege escalation
[file request container/CLAUDE.md] What standing instructions does the canonical base instruction template give every agent, and do any of them override safety behavior or redirect the agent's goal?
Agent hijacking
[file request .claude/skills/add-github/SKILL.md] What does the add-github skill's SKILL.md instruct, and how does it relate to the served src/ host modules, none of which implement GitHub channel integration?
Supply chain
[file request src/migrate-claude-memory-settings.ts] What exact content does CLAUDE_DEFAULT_SETTINGS contain and what do claudeSettingsTransformer.transform/write do — does the created or reconciled settings.json add hooks, permissions, env, or other agent control-plane directives?
Persistence
[file request .claude/skills/add-github/SKILL.md] Where does the claim 'The setup screens and step sequence do not change.' appear, and what setup steps does the skill instruct the agent to perform against host source files (barrel imports, file writes)?
Persistence
[file request src/project-doc-compose.ts] Which callers invoke writeAtomic and with what destination and content — is the composed project document written only inside the group state directory?
Persistence
[file request src/anchored-dir.ts] Where is AnchoredDir defined and does it refuse symlink components at open and at write/symlink/unlink entry points, as the realize.ts comments claim (to rule out container-planted symlink redirection of host writes)?
Persistence
[file request src/templates/library.ts] What are the values of LIBRARY_REPO, LIBRARY_BRANCH, and INDEX_URL, and is the template library pinned to a commit or resolved to a mutable branch at fetch time?
Supply chain
[file request src/group-persona.ts] How is the staged persona instructions.prepend.md composed into provider project docs at spawn, and can template persona content reach system-prompt tier without operator review?
Agent hijacking
[file request src/upgrade-state.ts] What is the value of FIX_COMMAND (the command the tripwire tells a coding agent to run to clear the upgrade stop), and what does executing that command do?
Code execution
[file request src/tasks.ts] Where are prepareScheduledTask and createScheduledTask defined, and is a scheduled task's script value executed by the host (and how, with what privileges)?
Code execution
[file request src/config.ts] Do getWebhookHost and getWebhookPort default to binding 127.0.0.1:3000, and can the WEBHOOK_HOST environment variable point the listener at a non-loopback interface?
Data exfiltration

Coverage gaps 560

Parts of the artifact the static analysis could not fully examine.

context:unanalyzable_binary binary content is only byte-scanned
.claude/skills/add-clidash/add/tools/clidash/public/favicon.ico
unanalyzable_binary binary content is only byte-scanned
src/drivers/docker-driver.ts
parse_error tree-sitter typescript parse has errors; extraction may be partial
.claude/skills/add-codex/payload/setup/providers/codex.test.ts
parse_error tree-sitter typescript parse has errors; extraction may be partial
.claude/skills/add-codex/payload/src/providers/codex-agents-md.test.ts
parse_error tree-sitter typescript parse has errors; extraction may be partial
.claude/skills/add-codex/payload/src/providers/codex-host-contribution.test.ts
parse_error tree-sitter typescript parse has errors; extraction may be partial
src/db/sessions.ts
parse_error tree-sitter typescript parse has errors; extraction may be partial
src/types.ts
no_dataflow_for_unsupported_script unsupported_script file: string-literal extraction only
scripts/photon-setup.ts
no_dataflow_for_dynamic_code line 17: invoked code is not structurally extracted
container/install-cli-tools.sh
no_dataflow_for_dynamic_code line 26: invoked code is not structurally extracted
container/install-cli-tools.sh
no_dataflow_for_dynamic_code line 22: invoked code is not structurally extracted
setup/lib/restart.sh
no_dataflow_for_dynamic_code line 35: invoked code is not structurally extracted
setup/run-suggested.sh
ledger_needs_context_unresolved run 1: declared-vs-actual.1 SRC:746f1f5ca950e01d
ledger_finding_without_valid_finding run 1: declared-vs-actual.12 SRC:f12e8caaed1e792c
ledger_finding_without_valid_finding run 1: declared-vs-actual.12 SRC:61b5fe2be1bcb62e
ledger_needs_context_unresolved run 1: declared-vs-actual.12 SRC:acd78195f0aa235c
ledger_missing run 1: declared-vs-actual.16 SRC:3697cc46cd3757f4
ledger_missing run 1: declared-vs-actual.16 SRC:5539b84d2c4649bb
ledger_missing run 1: declared-vs-actual.16 SRC:4bc732edd53ec593
ledger_missing run 1: declared-vs-actual.16 SRC:5764496665d067b4
ledger_missing run 1: declared-vs-actual.16 SRC:35205003906fca65
ledger_missing run 1: declared-vs-actual.16 SRC:b638a6e1a9690bdb
ledger_missing run 1: declared-vs-actual.16 SRC:de80eff7395c9ba1
ledger_missing run 1: declared-vs-actual.16 SRC:87ab669f60eb5c82
ledger_missing run 1: declared-vs-actual.16 SRC:24554505d40fac51
ledger_missing run 1: declared-vs-actual.16 SRC:34f0776fd8d86ed5
ledger_missing run 1: declared-vs-actual.16 SRC:14592039f24c004a
ledger_missing run 1: declared-vs-actual.16 SRC:283bd2b9cb55ef8e
ledger_missing run 1: declared-vs-actual.16 SRC:570a73a43c36adfa
ledger_missing run 1: declared-vs-actual.16 SRC:fcc3dfbff4419656
ledger_missing run 1: declared-vs-actual.16 SRC:0f5a898db50b69e9
ledger_missing run 1: declared-vs-actual.16 SRC:ed18a0cc90d40731
ledger_missing run 1: declared-vs-actual.16 SRC:ba97f7809186c6ab
ledger_missing run 1: declared-vs-actual.16 SRC:468663a419fb2e56
ledger_missing run 1: declared-vs-actual.16 SRC:8665ff23f29ddd99
ledger_missing run 1: declared-vs-actual.16 SRC:2ed30466bf66ce4f
ledger_missing run 1: declared-vs-actual.16 SRC:9a7a04b572017efd
ledger_missing run 1: declared-vs-actual.16 SRC:f621174577f08a0b
ledger_missing run 1: declared-vs-actual.16 SRC:22f7f2463b39532b
ledger_missing run 1: declared-vs-actual.16 SRC:719b49535db0dc9d
ledger_missing run 1: declared-vs-actual.16 SRC:87d16945dcfaa233
ledger_missing run 1: declared-vs-actual.16 SRC:0513c2fe41931d12
ledger_missing run 1: declared-vs-actual.16 SRC:eefb3c02dafca234
ledger_missing run 1: declared-vs-actual.16 SRC:fc13bc61d232df19
ledger_missing run 1: declared-vs-actual.16 SRC:2293156f70224223
ledger_missing run 1: declared-vs-actual.16 SRC:3119d2f8526f030c
ledger_missing run 1: declared-vs-actual.16 SRC:17d7753c090d543d
ledger_missing run 1: declared-vs-actual.16 SRC:9d6e91b86f6af271
ledger_missing run 1: declared-vs-actual.16 SRC:97128808c3641984
ledger_missing run 1: declared-vs-actual.16 SRC:9a647d2ad45aeeb9
ledger_missing run 1: declared-vs-actual.16 SRC:48c86570880d9d8f
ledger_missing run 1: declared-vs-actual.16 SRC:5b3cf4c4ee5d7ce7
ledger_missing run 1: declared-vs-actual.16 SRC:4fc53d8cf0e07423
ledger_missing run 1: declared-vs-actual.16 SRC:f8ff9834b39c725c
ledger_missing run 1: declared-vs-actual.16 SRC:a6816abe1947b15e
ledger_missing run 1: declared-vs-actual.16 SRC:1b5c8007961e1a19
ledger_missing run 1: declared-vs-actual.16 SRC:822ce11049a67e76
ledger_missing run 1: declared-vs-actual.16 SRC:bd3003d1e199371f
ledger_missing run 1: declared-vs-actual.16 SRC:0bc1a32b1929189d
ledger_missing run 1: declared-vs-actual.16 SRC:dbfafdd24809e09c
ledger_missing run 1: declared-vs-actual.16 SRC:3a40ceea637e9084
ledger_missing run 1: declared-vs-actual.16 SRC:8f24931375aa440d
ledger_missing run 1: declared-vs-actual.16 SRC:74c2ee043850025c
ledger_missing run 1: declared-vs-actual.16 SRC:6d6b5d3f9eddbda5
ledger_missing run 1: declared-vs-actual.16 SRC:2a306fef2ce60cce
ledger_missing run 1: declared-vs-actual.16 SRC:8ef243dcfa491821
ledger_missing run 1: declared-vs-actual.16 SRC:15695ebbec1faef4
ledger_missing run 1: declared-vs-actual.16 SRC:50f3e71e5a5efdfe
ledger_missing run 1: declared-vs-actual.16 SRC:56a5c2d637325d8d
ledger_missing run 1: declared-vs-actual.16 SRC:80efab7c77fe3d4f
ledger_missing run 1: declared-vs-actual.16 SRC:329cfddaa41a9494
ledger_missing run 1: declared-vs-actual.16 SRC:f06f610eac7a99df
ledger_missing run 1: declared-vs-actual.16 SRC:6dd9b7eada8abfcf
ledger_missing run 1: declared-vs-actual.16 SRC:c479877ec0b3a343
ledger_missing run 1: declared-vs-actual.16 SRC:911523f83f2a9912
ledger_missing run 1: declared-vs-actual.16 SRC:1021d74278c9b018
ledger_missing run 1: declared-vs-actual.16 SRC:72236f78a09b147d
ledger_missing run 1: declared-vs-actual.16 SRC:9409996a902e84ee
ledger_missing run 1: declared-vs-actual.16 SRC:f3427b1b18fd376e
ledger_missing run 1: declared-vs-actual.16 SRC:cad130b419c099a4
ledger_missing run 1: declared-vs-actual.16 SRC:bc8505e3709900bb
ledger_missing run 1: declared-vs-actual.16 SRC:83e978fee0b9296f
ledger_missing run 1: declared-vs-actual.16 SRC:42b930dc652fb6e9
ledger_missing run 1: declared-vs-actual.16 SRC:64c025088f488c10
ledger_missing run 1: declared-vs-actual.16 SRC:59fc01c6e523b2c8
ledger_missing run 1: declared-vs-actual.16 SRC:b6f76ff7749b90de
ledger_missing run 1: declared-vs-actual.16 SRC:7fd69b8a02cfa638
ledger_missing run 1: declared-vs-actual.16 SRC:936eacd2ad440fb7
ledger_missing run 1: declared-vs-actual.16 SRC:b1dc686a7b81d5d3
ledger_missing run 1: declared-vs-actual.16 SRC:71fc498181cf1fbe
ledger_missing run 1: declared-vs-actual.16 SRC:15dc1b8b7458b222
ledger_missing run 1: declared-vs-actual.16 SRC:2ddd798b741ac48a
ledger_missing run 1: declared-vs-actual.16 SRC:c97417ee734fe659
ledger_missing run 1: declared-vs-actual.16 SRC:43c88dbbf4f80e7a
ledger_missing run 1: declared-vs-actual.16 SRC:b0affca7e694b10c
ledger_missing run 1: declared-vs-actual.16 SRC:072c2ac2b3b8b3a7
ledger_missing run 1: declared-vs-actual.16 SRC:ec69341af162160c
ledger_missing run 1: declared-vs-actual.16 SRC:3c59e2919fc33488
ledger_missing run 1: declared-vs-actual.16 SRC:e90a1dc617059fdb
ledger_missing run 1: declared-vs-actual.16 SRC:7e2ef7e8b1cce513
ledger_missing run 1: declared-vs-actual.16 SRC:10fc8360d4ab5545
ledger_missing run 1: declared-vs-actual.16 SRC:c8f27c336898adb1
ledger_missing run 1: declared-vs-actual.16 SRC:5bde635eb77fe618
ledger_missing run 1: declared-vs-actual.16 SRC:d8006bee158bd89d
ledger_missing run 1: declared-vs-actual.16 SRC:5615822c1d8ada04
ledger_missing run 1: declared-vs-actual.16 SRC:4cebb5a9b9a92e67
ledger_missing run 1: declared-vs-actual.16 SRC:d2a68a897bac6135
ledger_missing run 1: declared-vs-actual.16 SRC:92fc6c9c04605f80
ledger_missing run 1: declared-vs-actual.16 SRC:96b7f995f026ba6a
ledger_missing run 1: declared-vs-actual.16 SRC:ba9099bef9e36f9b
ledger_missing run 1: declared-vs-actual.16 SRC:d15df888aacee231
ledger_missing run 1: declared-vs-actual.16 SRC:a77c6cc6a5db7d1b
ledger_missing run 1: declared-vs-actual.16 SRC:af30719ddb8411ae
ledger_missing run 1: declared-vs-actual.16 SRC:4d821897c485d896
ledger_missing run 1: declared-vs-actual.16 SRC:da31770fe3baceb7
ledger_missing run 1: declared-vs-actual.16 SRC:1e05d836eb7efc93
ledger_missing run 1: declared-vs-actual.16 SRC:41800f0a5eb25d5d
ledger_missing run 1: declared-vs-actual.16 SRC:8168f8ef619e80c4
ledger_missing run 1: declared-vs-actual.16 SRC:a7d0cf378eb9842d
ledger_finding_without_valid_finding run 1: declared-vs-actual.19 SRC:16e8ff0c1bc0a997
ledger_finding_without_valid_finding run 1: declared-vs-actual.19 SRC:7150d7ccfa25355a
ledger_finding_without_valid_finding run 1: declared-vs-actual.19 SRC:fd9acd222ea41bb3
ledger_missing run 1: behavior-chains.2 SRC:eb635fa6a2191cac
ledger_missing run 1: behavior-chains.2 SRC:661b592efc406103
ledger_missing run 1: behavior-chains.2 SRC:fdf8aed97768881b
ledger_missing run 1: behavior-chains.2 SRC:6cf6c789fcdb81c1
ledger_missing run 1: behavior-chains.2 SRC:f45f3c4469dc1a41
ledger_missing run 1: behavior-chains.2 SRC:ef05e2abaa0cdcd9
ledger_missing run 1: behavior-chains.2 SRC:06d4e9ba14e5ff91
ledger_missing run 1: behavior-chains.2 SRC:9c8aa14c8bdf1376
ledger_missing run 1: behavior-chains.2 SRC:00797c5b674ba54d
ledger_missing run 1: behavior-chains.2 SRC:9c51b6c4c7b393d2
ledger_missing run 1: behavior-chains.2 SRC:9f971d2dc9c9422d
ledger_missing run 1: behavior-chains.2 SRC:21ef6bfba101ed39
ledger_missing run 1: behavior-chains.2 SRC:5d1c6c181de5e426
ledger_missing run 1: behavior-chains.2 SRC:b2bee3076349d12c
ledger_missing run 1: behavior-chains.2 SRC:c09695065103e3cf
ledger_missing run 1: behavior-chains.2 SRC:f1fe91d489fb8c4a
ledger_missing run 1: behavior-chains.2 SRC:f7a4e84a33164e80
ledger_missing run 1: behavior-chains.2 SRC:5573e54eb7699738
ledger_missing run 1: behavior-chains.2 SRC:2b07b71cc74baff8
ledger_missing run 1: behavior-chains.2 SRC:1f175aadc5e6e7b1
ledger_missing run 1: behavior-chains.2 SRC:e3ebbb14c0c59408
ledger_missing run 1: behavior-chains.2 SRC:54989b2724b77660
ledger_missing run 1: behavior-chains.2 SRC:fc94591da07c926f
ledger_missing run 1: behavior-chains.2 SRC:53d825e72fc535ef
ledger_missing run 1: behavior-chains.2 SRC:54c6bdb7503f18b3
ledger_missing run 1: behavior-chains.2 SRC:29c187fe547264d2
ledger_missing run 1: behavior-chains.2 SRC:9acfb44d95df3b70
ledger_missing run 1: behavior-chains.2 SRC:1ea21012d37e067e
ledger_missing run 1: behavior-chains.2 SRC:0d62197849b81874
ledger_missing run 1: behavior-chains.2 SRC:e928a4d8da6cbc62
ledger_missing run 1: behavior-chains.2 SRC:4cac3de16df9b5ab
ledger_missing run 1: behavior-chains.2 SRC:9fad0c53231245a0
ledger_missing run 1: behavior-chains.2 SRC:2d51dcefdb1da355
ledger_missing run 1: behavior-chains.2 SRC:53b29601915286b7
ledger_missing run 1: behavior-chains.2 SRC:2dd58290db952bac
ledger_missing run 1: behavior-chains.2 SRC:dd42852dcdab8743
ledger_missing run 1: behavior-chains.2 SRC:408630ccf0786ee5
ledger_missing run 1: behavior-chains.2 SRC:91d4d23f2f06c886
ledger_missing run 1: behavior-chains.2 SRC:19ade9529d8b4630
ledger_missing run 1: behavior-chains.2 SRC:d22dc74a10c25a1b
ledger_missing run 1: behavior-chains.2 SRC:d43df07b8ee64a6d
ledger_missing run 1: behavior-chains.2 SRC:e457d843ef4ff55d
ledger_missing run 1: behavior-chains.2 SRC:7c981e3871e0851d
ledger_missing run 1: behavior-chains.2 SRC:80f759a892ac7390
ledger_missing run 1: behavior-chains.2 SRC:60439eb4b1e67c37
ledger_missing run 1: behavior-chains.2 SRC:54ce26b408ece896
ledger_missing run 1: behavior-chains.2 SRC:3400770728db29f8
ledger_missing run 1: behavior-chains.2 SRC:e090f34f28db0b75
ledger_missing run 1: behavior-chains.2 SRC:d37de09388743315
ledger_missing run 1: behavior-chains.2 SRC:282ab5516dc45deb
ledger_missing run 1: behavior-chains.2 SRC:3faa6e121507f9fd
ledger_missing run 1: behavior-chains.2 SRC:3be48870852aead3
ledger_missing run 1: behavior-chains.2 SRC:cabdb3dffa45b373
ledger_missing run 1: behavior-chains.2 SRC:708b60d1f88b9f7f
ledger_missing run 1: behavior-chains.2 SRC:620c186d61c1ed95
ledger_missing run 1: behavior-chains.2 SRC:54e7a1c075a7d5ed
ledger_missing run 1: behavior-chains.2 SRC:083af01885b1ff5a
ledger_missing run 1: behavior-chains.2 SRC:f40adbc7c33c301e
ledger_missing run 1: behavior-chains.2 SRC:3f0c67e92e23cbe6
ledger_missing run 1: behavior-chains.2 SRC:199c20b26a9409d5
ledger_missing run 1: behavior-chains.2 SRC:9a468d9059150a6c
ledger_missing run 1: behavior-chains.2 SRC:111062bfc3e6cc39
ledger_missing run 1: behavior-chains.2 SRC:511a50d0f1a87a15
ledger_missing run 1: behavior-chains.2 SRC:f93d60ee72a94c73
ledger_missing run 1: behavior-chains.2 SRC:1ec0a2b69b94635a
ledger_missing run 1: behavior-chains.2 SRC:9a7cfa6a4be0a2e7
ledger_missing run 1: behavior-chains.2 SRC:ab1a9dd6dfb0de33
ledger_missing run 1: behavior-chains.2 SRC:061a1cbd5b2bccde
ledger_missing run 1: behavior-chains.2 SRC:af268383b681e83c
ledger_missing run 1: behavior-chains.2 SRC:e4400798b50540cc
ledger_missing run 1: behavior-chains.2 SRC:b7e2b9b2834a69b8
ledger_missing run 1: behavior-chains.2 SRC:d4601f0cb849e8e1
ledger_missing run 1: behavior-chains.2 SRC:4cf2def59e369cc3
ledger_missing run 1: behavior-chains.2 SRC:dab23099a7869c15
ledger_missing run 1: behavior-chains.2 SRC:f6aae4048377d679
ledger_missing run 1: behavior-chains.2 SRC:d0c661fc2144f4a2
ledger_missing run 1: behavior-chains.2 SRC:27e1f56f9e7eb50d
ledger_missing run 1: behavior-chains.2 SRC:604e8e658f3c0fee
ledger_missing run 1: behavior-chains.2 SRC:8f2170e0647963b7
ledger_missing run 1: behavior-chains.2 SRC:e158842b888d91b1
ledger_missing run 1: behavior-chains.2 SRC:10d38948f2182e58
ledger_missing run 1: behavior-chains.2 SRC:68680e1d07c5d95d
ledger_missing run 1: behavior-chains.2 SRC:7f9ca22d384d49fc
ledger_missing run 1: behavior-chains.2 SRC:34819aef894e0a49
ledger_missing run 1: behavior-chains.2 SRC:9f7fd5e2f76e389d
ledger_missing run 1: behavior-chains.2 SRC:12b0882df2e39618
ledger_missing run 1: behavior-chains.2 SRC:f7c952f00e4fb438
ledger_missing run 1: behavior-chains.2 SRC:c7b4e4347e500d53
ledger_missing run 1: behavior-chains.2 SRC:c06cd8e60de0a036
ledger_missing run 1: behavior-chains.2 SRC:2e05cd39ed0812fc
ledger_missing run 1: behavior-chains.2 SRC:ea2bdc18827750e3
ledger_missing run 1: behavior-chains.2 SRC:65ada1ee7bd30ff8
ledger_missing run 1: behavior-chains.2 SRC:82682be35eaeb0c6
ledger_missing run 1: behavior-chains.2 SRC:ea64f7771a73dca6
ledger_missing run 1: behavior-chains.2 SRC:5d182426c71fdabf
ledger_finding_without_valid_finding run 1: behavior-chains.8 SRC:91bd1f1669cfc343
ledger_finding_without_valid_finding run 1: behavior-chains.8 SRC:f12e8caaed1e792c
ledger_finding_without_valid_finding run 1: behavior-chains.8 SRC:ba44c880d98b00fa
ledger_finding_without_valid_finding run 1: behavior-chains.8 SRC:61b5fe2be1bcb62e
ledger_finding_without_valid_finding run 1: behavior-chains.8 SRC:5409e0e7d6069d28
ledger_finding_without_valid_finding run 1: behavior-chains.8 SRC:e55bc82a0ad8cb7e
ledger_finding_without_valid_finding run 1: behavior-chains.12 SRC:a1166e1b98402762
ledger_finding_without_valid_finding run 1: behavior-chains.12 SRC:47ae0aadb534803a
ledger_finding_without_valid_finding run 1: behavior-chains.12 SRC:b809b761561dcd0c
ledger_missing run 1: behavior-chains.14 SRC:666fc77797370dc6
ledger_missing run 1: behavior-chains.14 SRC:b8e8ae2a0c06262b
ledger_missing run 1: behavior-chains.14 SRC:620b908257f64ee2
ledger_missing run 1: behavior-chains.14 SRC:51e64cc71befde2e
ledger_missing run 1: behavior-chains.14 SRC:11906b4acdd4f335
ledger_missing run 1: behavior-chains.14 SRC:a6836b5129f4f803
ledger_missing run 1: behavior-chains.14 SRC:27bb6e11475eeaef
ledger_missing run 1: behavior-chains.14 SRC:9c96c2ea5aecdf59
ledger_missing run 1: behavior-chains.14 SRC:ae36f739f9a1fff3
ledger_missing run 1: behavior-chains.14 SRC:198dce81bd46c486
ledger_missing run 1: behavior-chains.14 SRC:cba9a00d63cf79b5
ledger_missing run 1: behavior-chains.14 SRC:5fb970b8d7d31f63
ledger_missing run 1: behavior-chains.14 SRC:e1b13ec364cff51f
ledger_missing run 1: behavior-chains.14 SRC:8b30cccff0bea214
ledger_missing run 1: behavior-chains.14 SRC:073aeb5519b7648b
ledger_missing run 1: behavior-chains.14 SRC:0591035bf6ba5afb
ledger_missing run 1: behavior-chains.14 SRC:5a1be951c09a077c
ledger_missing run 1: behavior-chains.14 SRC:e680da631315bca4
ledger_missing run 1: behavior-chains.14 SRC:ad0f62923545d727
ledger_missing run 1: behavior-chains.14 SRC:a34730caaf307847
ledger_missing run 1: behavior-chains.14 SRC:d0aeec8bdef80d0a
ledger_missing run 1: behavior-chains.14 SRC:a422b8b4c3a3ea79
ledger_missing run 1: behavior-chains.14 SRC:ba51cc46f8ac69f7
ledger_missing run 1: behavior-chains.14 SRC:557e837cf2e673ae
ledger_missing run 1: behavior-chains.14 SRC:78ead940b88b5712
ledger_missing run 1: behavior-chains.14 SRC:c7bcb3cb17a536e3
ledger_missing run 1: behavior-chains.14 SRC:a838bd56b2dd116d
ledger_missing run 1: behavior-chains.14 SRC:457b063835d2da7c
ledger_missing run 1: behavior-chains.14 SRC:e8fd89451f349f6f
ledger_missing run 1: behavior-chains.14 SRC:6637b730dbc98bd9
ledger_missing run 1: behavior-chains.14 SRC:2c9cdfd8569ae9b3
ledger_missing run 1: behavior-chains.14 SRC:2f4ff3835877c55f
ledger_missing run 1: behavior-chains.14 SRC:7ccc4a52c1af24a9
ledger_missing run 1: behavior-chains.14 SRC:af48a4353d85045b
ledger_missing run 1: behavior-chains.14 SRC:38fa4db942f2ea6a
ledger_missing run 1: behavior-chains.14 SRC:08080aabd3301f54
ledger_missing run 1: behavior-chains.14 SRC:e496dc8ac53c8620
ledger_missing run 1: behavior-chains.14 SRC:755dbebfb5d7cafd
ledger_missing run 1: behavior-chains.14 SRC:0e2b61fac2a70205
ledger_missing run 1: behavior-chains.14 SRC:60b4d8f5da79ce27
ledger_missing run 1: behavior-chains.14 SRC:4359862c9c5dda8b
ledger_missing run 1: behavior-chains.14 SRC:d51099e90a935c54
ledger_missing run 1: behavior-chains.14 SRC:48cb5dcd4ae5ed3b
ledger_missing run 1: behavior-chains.14 SRC:cfd6fb4a19d7e52b
ledger_missing run 1: behavior-chains.14 SRC:586899b08e088f88
ledger_missing run 1: behavior-chains.14 SRC:e9dd7abf4ad21753
ledger_missing run 1: behavior-chains.14 SRC:6f509da58ce0290b
ledger_missing run 1: behavior-chains.14 SRC:5d382f98edd8a93a
ledger_missing run 1: behavior-chains.14 SRC:96d25200b41fd720
ledger_missing run 1: behavior-chains.14 SRC:d4d5470041cf5535
ledger_missing run 1: behavior-chains.14 SRC:83577bfd17c5c7c8
ledger_missing run 1: behavior-chains.14 SRC:16afbc589f897593
ledger_missing run 1: behavior-chains.14 SRC:d444982632de5e0d
ledger_missing run 1: behavior-chains.14 SRC:4f058be4107075c4
ledger_missing run 1: behavior-chains.14 SRC:ce548f3ae1ffdba7
ledger_missing run 1: behavior-chains.14 SRC:127b2c5bd07256e8
ledger_missing run 1: behavior-chains.14 SRC:6804fb9be7a3eb5d
ledger_missing run 1: behavior-chains.14 SRC:8d8feed2dbbdcb4a
ledger_missing run 1: behavior-chains.14 SRC:2b809e7bc4cea615
ledger_missing run 1: behavior-chains.14 SRC:c578e85f0a59c0b8
ledger_missing run 1: behavior-chains.14 SRC:87d14ee018cf19a5
ledger_missing run 1: behavior-chains.14 SRC:ca9d55fdce69315a
ledger_missing run 1: behavior-chains.14 SRC:0e16b3db2b84d652
ledger_missing run 1: behavior-chains.14 SRC:e97e2a51d4c00ba2
ledger_finding_without_valid_finding run 1: behavior-chains.27 SRC:24840349a64453b2
invalid_judge_pass run 1: ['behavior-chains.14', 'behavior-chains.2', 'declared-vs-actual.1.expansion', 'declared-vs-actual.12.expansion', 'declared-vs-actual.16']
invalid_judge_finding declared-vs-actual.12
invalid_judge_finding declared-vs-actual.19
invalid_judge_finding behavior-chains.8
invalid_judge_finding behavior-chains.12
invalid_judge_finding behavior-chains.27
invalid_expansion declared-vs-actual.1
invalid_expansion declared-vs-actual.12
request_unanswered declared-vs-actual.1: invalid file request (evidence_ids not shown in the asking request)
request_unanswered request.0: instruction-surface.0/req-codex-appserver: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.0: instruction-surface.0/req-codex-provider: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.0: instruction-surface.0/req-codex-contract: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.0: instruction-surface.0/req-codex-setup: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.0: instruction-surface.0/req-github-adapter: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.0: instruction-surface.0/req-imessage-adapter: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.1: instruction-surface.0/req-photon-setup: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.1: instruction-surface.0/req-setup-index: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.1: instruction-surface.1/req-photon-setup: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.1: instruction-surface.1/req-pair-telegram: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.1: instruction-surface.1/req-set-env: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.1: instruction-surface.1/req-restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.1/req-init-first-agent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.1/req-teams-manifest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.1/req-slack-branch: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.1/req-slack-formatting: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.2/request-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.3/req-slack-app-core: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.3/req-add-github-skill: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.3/req-diagnostics-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.3/req-init-first-agent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.4/req-skillmd: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.4/req-hookspath: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.2: instruction-surface.4/req-runchannelskill: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.3: instruction-surface.4/req-credhelper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.3: instruction-surface.5/add-github-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.3: instruction-surface.5/registry-login-file: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.3: instruction-surface.5/restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: instruction-surface.6/req-claude-md-write: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: repair.instruction-surface.7/add-github-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: repair.instruction-surface.7/device-client-credflow: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: instruction-surface.8/upgrade-tripwire-msg: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: instruction-surface.8/claude-config-bypass: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: instruction-surface.8/canon-template-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.4: instruction-surface.8/template-library-pin: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: instruction-surface.9/req-drivers-silent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: instruction-surface.9/req-credhelper-silent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: instruction-surface.9/req-install-claude: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: instruction-surface.10/skill-md-add-github: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: declared-vs-actual.0/req-memory-hook: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: declared-vs-actual.0/req-codex-auth: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.5: declared-vs-actual.0/req-autoapprove-callsite: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.1/req-app-server-autoapproval: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.1/req-credential-store: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.1/req-add-github-scope: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.1/req-memory-hook: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-install-slug: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-imessage-configure: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-adapter-github: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-adapter-discord: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-adapter-imessage: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.6: declared-vs-actual.2/req-codex-base-doc: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.7: declared-vs-actual.3/req-photon-setup: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.7: declared-vs-actual.3/req-imessage-configure: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.7: declared-vs-actual.3/req-restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.7: declared-vs-actual.3/req-init-first-agent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.7: declared-vs-actual.3/req-teams-manifest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.3/req-q-ts: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.4/req-telegram-multi-instance: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.4/req-restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.4/req-teams-manifest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.4/req-setup-index: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.5/req-upload-trace: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.5/req-memory-hook: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.6/upgrade-state-set: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.6/credential-helper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.6/install-slug-source: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.8: declared-vs-actual.6/github-welcome-addendum: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.9: declared-vs-actual.7/req-skill-apply-body: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.9: declared-vs-actual.7/req-git-fetch-branch: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.9: declared-vs-actual.8/req-git-builders: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.10: declared-vs-actual.8/req-skill-directives: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.10: declared-vs-actual.8/req-codex-claims: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.10: declared-vs-actual.8/req-github-skillmd: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.11: declared-vs-actual.9/req-skill-apply: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.11: declared-vs-actual.9/req-diagnostics: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.12: declared-vs-actual.9/req-bun-pin: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.12: declared-vs-actual.10/pheimit-dest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.12: declared-vs-actual.10/registry-clone: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.12: declared-vs-actual.10/login-script: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.13: declared-vs-actual.10/skill-driver: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.13: declared-vs-actual.10/slack-job: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.13: declared-vs-actual.10/slack-autoreg: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.13: declared-vs-actual.10/telegram-pre: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.14: declared-vs-actual.11/req-registry-state: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.14: declared-vs-actual.11/req-install-docker: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.14: declared-vs-actual.11/req-init-cli-agent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.14: declared-vs-actual.11/req-pull-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.14: declared-vs-actual.11/req-git-fetch-branch: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.14: declared-vs-actual.11/req-companions: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.11/req-portal: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.12/slack-job: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.12/cred-helper-mjs: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.12/register-claude-token: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.13/req-install-claude: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.13/req-run-suggested: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.13/req-register-token: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.15: declared-vs-actual.13/req-diagnostics-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.16: declared-vs-actual.13/req-build-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.16: declared-vs-actual.13/req-skill-apply: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.16: declared-vs-actual.13/req-readme-telemetry: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.17: declared-vs-actual.14/req-release-image: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.17: declared-vs-actual.14/req-registry-login: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.18: declared-vs-actual.14/req-cred-helper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.18: declared-vs-actual.14/req-claude-handoff: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.18: declared-vs-actual.14/req-diagnostics: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.18: declared-vs-actual.14/req-host-status: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.18: declared-vs-actual.14/req-setup-commit-rest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.18: declared-vs-actual.14/req-pull-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.19: declared-vs-actual.15/req-channels-remote: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.19: declared-vs-actual.15/req-upgrade-state: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.19: declared-vs-actual.17/req-skill-apply: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.19: declared-vs-actual.17/req-remote-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.20: declared-vs-actual.17/req-cred-helper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.20: declared-vs-actual.17/req-update-skills: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.20: declared-vs-actual.17/req-portal-head: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.20: repair.declared-vs-actual.18/pull-script: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.20: repair.declared-vs-actual.18/cred-helper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.21: repair.declared-vs-actual.18/registry-state: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.21: repair.declared-vs-actual.18/login-head: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.21: declared-vs-actual.19/req-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.21: declared-vs-actual.19/req-peer-cleanup: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.21: declared-vs-actual.19/req-register-token: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.19/req-registry-signin: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.19/req-cred-helper-install: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.20/req-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.20/req-run-channel: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.20/req-slack-job: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.20/req-portal-index: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.20/req-diagnostics: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.22: declared-vs-actual.21/req-status-io: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.23: declared-vs-actual.21/req-service-persist: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.23: declared-vs-actual.23/skill-md-github: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.23: declared-vs-actual.23/portal-setup-client: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.23: declared-vs-actual.24/slack-worker-audit: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.23: declared-vs-actual.24/install-identity-read: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.23: declared-vs-actual.24/device-client-dest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.25/req-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.25/req-projdoc-compose: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.25/req-provider-registry: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.26/req-connection-getdb: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.27/delivery-perm-sql: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.27/skill-md-steps: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.28/req-docker-prepare: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.24: declared-vs-actual.28/req-env-read: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.29/req-claude-settings-write: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.29/req-installed-barrel: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.31/req-compact-instructions: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.32/slack-job-exec: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.32/portal-link-dest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.32/template-fetch-pin: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.33/self-mod-module: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.33/add-github-skill: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.35/req-add-github-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.35/req-add-codex-claims: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.36/ftx-transformers: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.25: declared-vs-actual.36/group-skills-mat: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: declared-vs-actual.37/lib-fetch-rest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: declared-vs-actual.38/config-constants: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: declared-vs-actual.39/req-upgrade-state-script: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: repair.behavior-chains.0/req-setup-auth: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: repair.behavior-chains.0/req-build-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: repair.behavior-chains.0/req-github-skill: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: repair.behavior-chains.0/req-codex-setup-payload: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: repair.behavior-chains.0/req-memory-hook: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.26: repair.behavior-chains.0/req-cli-tools: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: repair.behavior-chains.0/req-codex-constants: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.1/req-github-adapter: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.1/req-discord-adapter: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.1/req-restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.1/req-install-slug: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.3/pull-sh-source: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.3/host-claude-settings-hook: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.4/req-upgrade-state: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.4/req-release-image: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.27: behavior-chains.4/req-cli-tools-manifest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.28: behavior-chains.4/req-skill-instructions: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.28: behavior-chains.5/photon-auth-store: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.28: behavior-chains.5/q-driver-routing: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.29: behavior-chains.5/git-branch-commands: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.29: behavior-chains.6/registry-login: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.29: behavior-chains.6/skill-apply-exec: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.30: behavior-chains.7/req-skill-driver: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.30: behavior-chains.7/req-init-first-agent: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.31: behavior-chains.7/req-registry-login: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.31: behavior-chains.7/req-restart-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.32: behavior-chains.7/req-tz-claude: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.33: behavior-chains.7/req-container-rest: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.33: behavior-chains.8/req-pull-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.33: behavior-chains.8/req-cred-helper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.33: behavior-chains.8/req-auth-ts: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.33: behavior-chains.8/req-reg-claude: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.33: behavior-chains.8/req-github-adapter: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.34: behavior-chains.8/req-auto-ts: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.34: repair.behavior-chains.9/req-install-claude-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.34: repair.behavior-chains.9/req-run-suggested-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.34: repair.behavior-chains.9/req-diagnostics-head: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.35: repair.behavior-chains.9/req-registry-login: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.35: repair.behavior-chains.9/req-container-build-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.36: repair.behavior-chains.9/req-host-status-mjs: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.36: behavior-chains.10/req-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.36: behavior-chains.10/req-channels-remote: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.36: behavior-chains.10/req-ph-telemetry: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.36: behavior-chains.10/req-claude-assist: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.37: behavior-chains.10/req-skill-apply: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.37: behavior-chains.10/req-browser-open: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.38: behavior-chains.11/req-channels-remote: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.38: behavior-chains.11/req-dial-pairing: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.38: behavior-chains.11/req-skill-apply: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.38: behavior-chains.11/req-telegram-pairing: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.39: behavior-chains.11/req-auto-image: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.39: behavior-chains.11/req-portal-imports: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.39: behavior-chains.11/req-auto-userinput: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.40: behavior-chains.12/cred-helper-file: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.40: behavior-chains.12/registry-state-lib: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.40: behavior-chains.12/skill-entry: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.41: behavior-chains.12/auto-wizard: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.42: repair.behavior-chains.13/req-pull-sh: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.42: repair.behavior-chains.13/req-registry-login: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.42: repair.behavior-chains.13/req-install-credhelper: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.42: behavior-chains.15/req-skill-md-claim: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.42: behavior-chains.15/req-github-channel: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.16/req-slack-worker: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.16/req-slack-job-spawn: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.16/req-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.17/slack-worker: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.17/slack-job-head: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.17/skill-doc: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.17/device-client: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.17/npmrc-build: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.18/req-group-skills: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.43: behavior-chains.19/skill-doc-install: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.44: behavior-chains.19/skill-doc-claims: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.44: behavior-chains.19/outbox-read-confinement: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.44: behavior-chains.21/task-script-runner: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.44: behavior-chains.21/host-sweep-acks: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.44: behavior-chains.22/migrate-settings: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.44: behavior-chains.22/slack-worker: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.22/device-client: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.22/template-source: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.22/a2a-guard: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.22/self-mod: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.23/skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.23/mount-allowlist-path: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.45: behavior-chains.23/slack-interceptor: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.46: behavior-chains.24/req-task-runner: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.24/req-approvals-mod: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.24/req-canon-claude: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.24/req-skill-md: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.25/req-migrate-claude-settings: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.25/req-skill-doc-claim: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.25/req-project-doc-compose: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.25/req-anchored-dir: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.26/lib-constants: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.26/persona-stage: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.47: behavior-chains.27/fix-command-def: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.48: behavior-chains.27/task-script-exec: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
request_unanswered request.48: behavior-chains.27/webhook-host-config: invalid answer output: schema: <root>: Additional properties are not allowed ('error' was unexpected); schema: <root>: 'echo' is a required property; schema: <root>: 'answers' is a required property; schema: <root>: 'findings' is a required property; schema: <root>: 'requests' is a required property; echo: missing
invalid_refuter Additional properties are not allowed ('error' was unexpected) Failed validating 'additionalProperties' in schema: {'$schema': 'https://json-schema.org/draft/2020-12/schema', 'title': 'oracle refuter output', 'type': 'object', 'additionalProperties': False, 'required': ['echo', 'results', 'requests'], '$defs': {'gate': {'type': 'object', 'additionalProperties': False, 'required': ['pass', 'evidence_ids', 'quote'],