Claude Control Probes test the official SDK
Run deterministic control probes against the official Claude Code executable and TypeScript Agent SDK. These developer fixtures do not install a Link harness. Security has the fixture's execution boundary and Decisions its control-surface choice.
Run the probes
Use Linux x86_64 with glibc, Node 24 or newer, and the repository's agent setup. Run these commands from the union checkout's root. Installation downloads the official runtime from npm with install scripts disabled.
cd link-public/integrations/agents/harnesses/claude/probes
npm ci --no-audit --no-fund --ignore-scripts
npm testWhat the suite needs and touches
The suite needs loopback sockets and subprocess execution. Its local provider returns fixed Anthropic message streams, questions and tool calls. It uses a synthetic API credential and contacts no account or paid model. Every native query uses a temporary home, config directory and repository. The suite removes its temporary files on completion. A background worker has a bounded lifetime as a cleanup fallback.
Run one boundary
A successful run exits zero with no skipped tests. npm run build checks the
fixtures against the pinned SDK's public types. To isolate one boundary after
building:
node --test --test-name-pattern='restart' dist/native.test.js
node --test dist/transport.test.js
node --test dist/pins.test.jsRead the evidence boundary
What each test file establishes, and what none of them does.
native.test.ts
It runs the real executable with a stand-in provider. It exercises selected session IDs, missing and foreign-home resume, approvals, questions, MCP elicitation, configuration loading, hooks, mirror failure, process restart, background task settlement and the structured CLI comparator.
transport.test.ts
It runs the real SDK against a synthetic protocol peer. It isolates pending-request envelope redelivery, callback correlation, cancellation, duplicate delivery and absent handlers. These tests establish SDK translation behavior. They do not certify a native dialog renderer, daemon reconnection or cross-process request reattachment.
pins.test.ts
It refuses a changed public type file or Linux executable digest.
The exact runtime is Claude Code 2.1.300, paired with Agent SDK 0.3.300 and
its manifest's harness schema 1. The manifest identifies runtime source
c6733ae1276880507ca0c5b053ae18fb0df090d6. Its tested-wrapper list does not include
0.3.300, so the manifest alone does not establish wrapper compatibility.
The npm lockfile records the complete installed dependency graph.
Settings the tests use
The tests use explicit permissionMode: 'default', the claude_code system
prompt preset and an explicit settings-source policy. Empty sources disable
filesystem settings. Project and omitted-source cases exercise instructions,
skills and command hooks. Built-in runtime features are distinct from
filesystem settings and need their own inventory.
What they don't certify
These probes do not certify model reasoning, a Link model proxy, complete native state capture, fork/child restoration, machine portability or permission enforcement by Link. Actual-account behavior requires its own behavioral QA.