You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e69ea0e
Browse filesBrowse the repository at this point in the historyBrowse files
Add `--candidate` when using a freshly packed candidate payload. `--approvals`
129
+
and `--realistic-config` are separate suites. The default baseline and existing
130
+
lifecycle cases retain their original behavior and pins.
131
+
132
+
The consent suite disables VS Code global auto-approval and uses native Tool
133
+
API confirmation dialogs with the supported guest-only `window.dialogStyle: custom`
134
+
setting, so VS Code renders the prompt in its window. This changes dialog
135
+
rendering without granting tool permission; native macOS dialog rendering is
136
+
outside this suite. An exact echo grant is made through the normal
137
+
**Manage Tool Approval** UI at profile scope. It does not edit the approval
138
+
database. The fixture extension trusts the known server startup and disables
139
+
VS Code workspace trust in the guest; workspace/server trust integration,
140
+
inline chat and Agent Host permission flows remain unverified.
141
+
142
+
Claude Code runs its interactive terminal UI with `--permission-mode default`,
143
+
without print mode, permission bypass flags, or seeded tool grants. The guest's
144
+
built-in Expect provides a real 120×40 PTY; the driver records raw output and
145
+
the current rendered screen, including Unicode, cursor movement and erasure.
146
+
Only the exact synthetic fixture choices are selected. Workspace trust and
147
+
the synthetic loopback API-key prompt are recorded separately. The native
148
+
client writes its exact-tool grant to local settings; the harness only reads it.
149
+
The driver waits for the same peer's completed `tools/list` and an idle terminal
150
+
prompt before typing the exact fixture request. Launch arguments, discovery
151
+
readiness and the typed request are recorded. The Messages gateway supplies
152
+
deterministic tool rounds and the separately identified session-title response
153
+
without a live provider; a main request missing the fixture tool still fails.
154
+
155
+
| Case | Required observation |
156
+
| --- | --- |
157
+
| One-shot re-prompts | Two different echo arguments in one client session each require visible approval, dispatch once and return the exact value from the same peer PID. |
158
+
| Deny and Escape | Refuse and cancel separately at the visible permission prompt; neither dispatches a tool call. Initialization/discovery traffic is allowed. |
159
+
| Persistent exact-tool grant | Grant echo through the client UI, restart the client with a new nonce and peer PID, and call echo without another prompt. An ungranted warn tool still prompts and is denied. |
160
+
| Guard after approval | Approve the attack fixture through the native UI, observe the peer call and guard block, then recover with the previously approved echo. |
161
+
162
+
Consent decisions must precede dispatch. Missing/repeated decisions, mismatched
163
+
arguments, unexpected grants, timeout kills, reused observations and incomplete
164
+
case reports fail validation. Negative Claude decisions can stop the turn
165
+
without returning a tool result to the gateway. They require a usable native
166
+
prompt and orderly exit, rather than an invented denial response.
167
+
168
+
Reviewed local measurement on 2026-10-13 passed **4/4 VS Code and 4/4 Claude
169
+
Code approval cases** using published mcpm 0.47.1, with seven exported
170
+
observations per client, on macOS
171
+
26.6.2/arm64 with Node 26.11.1 and the pinned client versions. Both clients
172
+
finished normally without deadline kills. Host/guest fixture hashes match,
173
+
and both clones were stopped/deleted. The original published-baseline suite
174
+
was then repeated against the same harness: **8/8 VS Code and 7/7 Claude Code**
175
+
passed, with matching hashes and cleanup. All 22 account/VM-free harness checks
176
+
pass on Node 22, 24 and 26; mocks remain separate from the native evidence.
177
+
178
+
Independent final candidate validation on 2026-10-13 repeated **4/4 VS Code
179
+
and 4/4 Claude Code**, with seven observations each, normal exits and clean
180
+
clone teardown. The fresh pnpm-packed archive from clean Astra-reviewed
181
+
`ed02ef22380d5f6c919050bb82ccd476e4f737bf` has SHA-256
182
+
`d1e6f4ac327ec85fc34561010950149612e1e5857b91befa5d3bbf299655a9de`. The candidate uses
183
+
the repository placeholder version 0.15.0; it is not the published npm version.
184
+
All 134 installed package/distribution files, host/stage/guest harness hashes,
185
+
raw approval/refusal receipts, restart peer IDs and guard block/recovery
186
+
observations match. Parent checks also pass all 22 harness regressions,
187
+
typecheck/build and 3,588 source tests; the reviewed 8/8 + 7/7 ordinary baseline
188
+
receipts were independently checked. Source/archive records identify this
189
+
local build, not signed provenance. Raw native evidence stays local.
190
+
191
+
Review corrected native dialog title ordering/capitalization, approval-tree
192
+
pointer interaction and accessible labels, terminal input/redraw timing,
193
+
interactive startup racing MCP discovery, and the separate synthetic title
194
+
request. Validation now requires the actual Claude launch/prompt readiness,
195
+
the VS Code checkbox transition, and a refusal receipt. Earlier exploratory
196
+
failures and one interrupted attempt are superseded; none count as passes. An
197
+
independent candidate repeat later exposed a shutdown race: a raw CDP socket
198
+
error event had no stack and serialized as an empty approval record, falsely
199
+
failing a successful persisted echo. Connection errors now follow the bounded
200
+
transport retry path, and fatal errors always retain a diagnostic. The
201
+
zero-decision requirement after restart is unchanged. The same candidate
202
+
then passed all four cases in both clients. The unchanged published baseline
203
+
also passed 8/8 VS Code and 7/7 Claude Code again after this fix.
204
+
100
205
The runner clones the immutable image independently for **VS Code first, then
101
206
Claude Code**, using the base image's synthetic `admin` account. Each clone is
102
207
stopped/deleted after its client completes, fails, or the runner receives
@@ -191,8 +296,8 @@ evidence local; publish scoped results rather than entire client transcripts.
191
296
192
297
## Remaining verification
193
298
194
-
Live providers and actual model/usage-skill behavior, interactive chat/default
195
-
approval workflows, other clients/platforms, additional configuration variants,
299
+
Live providers and actual model/usage-skill behavior, interactive chat and
300
+
approval paths beyond the measured suite, other clients/platforms, additional configuration variants,
196
301
and complete protocol conformance remain unverified. Native client versions
197
302
and observed wire protocol must be recorded rather than inferred from package
198
303
versions. Updating pins requires repeating the native matrix. SIGKILL, host
0 commit comments