Issue short-lived Public Agent Preview access
Unauthenticated. Body is {} or an optional display_label. Idempotency-Key is optional on this grant route only. Subsequent Public Preview writes (POST /v0/capabilities, POST /v0/checks, POST /v0/usage-events) require Idempotency-Key. When EXACTLANE_PUBLIC_ACCESS_ENABLED is unset or false, the route still exists and returns 403 PUBLIC_ACCESS_DISABLED. When Public Agent Preview is enabled, grant issuance requires trusted-proxy process status CONFIGURED and a verified per-request client identity through that trusted proxy. CONFIGURED means the settings parse; it does not guarantee every request has a usable identity. Untrusted peers, missing headers, malformed values, and multi-hop lists return HTTP 503 PUBLIC_ACCESS_IDENTITY_UNAVAILABLE on this REST route and do not hash a shared loopback proxy peer. MCP check_mcp_capability uses the same grant path but returns HTTP 200 with result.isError and structuredContent.error.code PUBLIC_ACCESS_IDENTITY_UNAVAILABLE; it does not expose HTTP 503. The documented Cloudflare path prefers CF-Connecting-IP. X-Forwarded-For remains supported only for a trusted ingress that overwrites it with one single valid IP; multi-hop X-Forwarded-For fails closed because Exactlane cannot choose a hop. Issued credentials last 30 minutes, use Phase 0A agent scopes only, and never classify traffic as EXTERNAL_REVIEWED. The bearer token is disclosed only on the original 201; exact Idempotency-Key replay for the same hashed client identity returns 200 without the token and cannot recover another caller's credential. Different hashed client identities use independent idempotency namespaces. Callers who share a hashed identity (NAT, VPN, or shared network egress) share that namespace. Issuance 429 responses include Retry-After. Per-client limits are the normal bottleneck; global hour/day values are emergency ceilings. After grant expiry, snapshot_digest cannot be used to fetch snapshot bytes; keep inline bytes or re-submit. A capability snapshot is a cached caller-provided claim, not live truth. Caller owns CONTINUE/UPDATE/HOLD. Live probing remains off. Self-revoke with DELETE /v0/agents/{agent_id}.
Request
- Base URL: https://exactlane.dev (the document declares no server; this is the origin it was published from)
- URL: https://exactlane.dev/v0/public-access/grants
- Auth: none required
Headers
Optional on POST /v0/public-access/grants only. If supplied, exact replay for the same hashed client identity returns 200 without the bearer token. Different hashed client identities use independent idempotency namespaces. Callers who share a hashed identity (NAT, VPN, or shared network egress) share that namespace. Subsequent Public Preview capability, check, and usage-event writes still require Idempotency-Key.
Request body
Response
Exact Idempotency-Key replay without the bearer token
Changes
No recorded changes to this operation across all 1 revision of this API.