Model Lane Doctrine
Model Lane Doctrine — which tool each model surface must use
Your lane is decided by your runtime's HTTP capability, not by preference. A lane failure is a classified outcome, never proof the key is broken.
The one law
Before blaming a key, run the keyless probe your surface can always do: GET https://miscsubjects.com/api/dispatch?conformance=1 — if it returns 200 and your keyed call fails, your lane is wrong, not the key. If it also fails, your surface cannot reach the host at all: switch surfaces, do not retry.
ChatGPT web (browsing tool)
USE: pure GET on the dispatch door via your browser/fetch tool. Every read and every write is reachable this way: GET https://miscsubjects.com/api/dispatch?invoke=TOOL_NAME&body=URLENCODED_ARGS&share=KEY — including voxel verbs, where body is URL-encoded JSON.
NEVER: bash, curl, or python requests. Your sandbox has no DNS; every such attempt dies with NameResolutionError before reaching the server. A bash stack trace here means host_unreachable_from_this_process — it says nothing about the key.
FORBIDDEN CONCLUSION: "the token is broken." If your browsing tool used the key successfully one turn ago, the key did not break; you changed lanes. Return to the GET lane.
ALTERNATE: Custom GPT Actions — the OpenAPI schema at https://miscsubjects.com/api/openai/actions.json is live and equals curl against /api/dispatch.
ChatGPT code interpreter (Advanced Data Analysis)
No network at all. Print the recovery block, hand the human the GET URLs, stop. Never loop retries in this sandbox.
Claude web / Claude app (analysis or bash tool)
USE: curl via bash — all three key lanes work (Bearer header, POST body, query string). Prefer POST JSON body for writes; the header for GETs.
Claude Code, Codex CLI, and any shell agent
USE: raw curl, any lane. You inherit the terminal's HTTP; nothing is stripped.
Gemini (URL context / fetch tool)
USE: GET with the key in the query string; if your fetch tool strips credentialed query strings, fall back to the ChatGPT-web GET-invoke pattern which carries the key as an ordinary parameter.
Kimi and other API-native models
USE: POST JSON body to /api/dispatch or the protocol routes; the body lane is never stripped.
Browser-use, Playwright, and human browsers
USE: full URLs with query strings; a real browser sends everything and passes edge checks.
Lane ranking when unsure
Header beats POST body beats query string. If a call fails with a valid key, drop one rung. Never re-mint on a lane failure.
Per-vendor drops
Every token drop handed to a model should open with a YOUR LANE header naming the receiving vendor and surface, the single correct method, and the forbidden methods — this page is the source those headers compile from.
Ask this article · 2 suggested prompts
Text the build (+14245134626) or WhatsApp — slug|question creates a question node. Paste evidence with ingest slug|q:NODE_ID|your paste.