Design spec for routing OCP/OLP proxy requests through an interactive
Claude Code session (cc_entrypoint=cli) to keep traffic on the Anthropic
subscription pool post-2026-06-15, so the tool stays usable for Pro
subscribers (whose Agent SDK credit is tiny).
Builds on community PR #101 by jaekwon-park (dtzp555-max/ocp) —
interactive-claude-via-tmux idea — redesigned: native JSONL transcript
read instead of hook->result.json (no --dangerously-skip-permissions,
no JSON-escaping fragility), structural MCP stripping for multi-tenant.
Validated by PI231 spikes (claude v2.1.158, tmux 3.3a):
- S2 transcript output: PASS (deterministic path, escaping-clean,
turn_duration completion marker)
- S3 submission: PASS (key-token Enter, not literal newline; Ink #15553)
- S1 billing+no-tool: PARTIAL (cc_entrypoint=cli holds with
--system-prompt; but account-attached managed MCP auto-attaches)
- T1 completion-detect: PARTIAL (turn_duration absent on tool_use turns
-> mandatory dual-signal guard: turn_duration OR quiescence/wall-clock)
- T3 multiline submit: PASS (prompt-to-file + send-keys -- + separate Enter)
- T6 disable MCP: PASS (--strict-mcp-config is THE mechanism; editing
.claude.json does NOT work — account/server-driven)
Reviewed by two independent agents (spike-informed + fresh-context opus);
both verdicts sound-with-gaps; all must-fixes folded in.
Deployment A (single-user/multi-device) is implementable as canary.
Deployment B (family/team share) gated on T2 (verify tools:[] in body)
+ T4 (concurrency) — now verification, not open research, since T6
resolved the MCP-disable mechanism.
Status: Draft (pre-implementation). Authority-of-record ADR (new) to
land before code per spec section 12.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>