PR #17963, head eb7110b1b061affa34e31222759c2537197c1c6b, base 1451e7cb23034d29774338608368a15d8845df36 Production source unchanged throughout all probes (SHA256 cf18f56102b7931211f2c234cc72ea51661cd6f0e7d4dd4621c793b5bcdb6654). Before: exact main with four regression cases: 3 fail, 1 plan-capture control passes. After: 290 adapter tests pass; scoped lint/format/server typecheck pass (one pre-existing unused layer warning). Native SDK 0.3.276 + Claude CLI 2.1.303 on headless Linux. A deterministic loopback Anthropic API response requested native Write. Real SDK callback, CLI permission engine, native file executor, production adapter; no fake file writer. Direct adapter: Auto Plan accept: marker absent pending -> present after accept. Full-access Plan decline: absent before and after. Integrated web: normal worktree dev server (isolated .t3), native provider, real event ingest/orchestrator/client approval RPC. Enable legacy Plan in Settings; Claude Sonnet 5.5 selected; Full access + Plan Write prompts. Marker absent while pending, Approve clicked -> native file contains approved by client; run completed. New Auto + Plan thread prompts, Decline clicked -> marker stays absent; run completed. Both runtime requests persisted resolved with respective accept/decline decisions. This is a controlled model-response integration test, not verification of a remote model obeying Plan instructions. Provider warning about loopback classifier billing is expected for this test gateway. Not verified: macOS, Windows, iOS, Android, Electron desktop; remote/relay/tunnel client connections.