{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://docs.aiagentnet.cloud/ahcp/v1/errors.json","title":"AHCP Error Code Catalog","version":"1.0.0","description":"Stable error codes for AHCP command results. Hosts MUST map failures to these codes when exposing agent-facing surfaces. message is human-readable; code is machine-stable.","codes":[{"code":"ahcp.ok","http_status_hint":200,"retryable":false,"meaning":"Command succeeded."},{"code":"ahcp.invalid_argument","http_status_hint":400,"retryable":false,"meaning":"Required argument missing or fails input_schema."},{"code":"ahcp.not_found","http_status_hint":404,"retryable":false,"meaning":"Referenced resource (tab, bookmark, download, extension, etc.) does not exist."},{"code":"ahcp.unavailable","http_status_hint":503,"retryable":true,"meaning":"Runtime dependency missing (e.g. Chromium binary not installed)."},{"code":"ahcp.timeout","http_status_hint":504,"retryable":true,"meaning":"Command exceeded its time budget."},{"code":"ahcp.ssrf_blocked","http_status_hint":400,"retryable":false,"meaning":"URL rejected by public-fetch / SSRF policy."},{"code":"ahcp.permission_denied","http_status_hint":403,"retryable":false,"meaning":"Host policy denied the command for this principal."},{"code":"ahcp.approval_required","http_status_hint":403,"retryable":true,"meaning":"Command is sensitivity=approval and human approval is not yet granted."},{"code":"ahcp.navigation_failed","http_status_hint":502,"retryable":true,"meaning":"Browser navigation failed or challenge page blocked completion."},{"code":"ahcp.dom_failed","http_status_hint":409,"retryable":true,"meaning":"Element not found or click/type/evaluate on page failed."},{"code":"ahcp.io_failed","http_status_hint":500,"retryable":true,"meaning":"Local filesystem or download IO failed."},{"code":"ahcp.not_supported","http_status_hint":501,"retryable":false,"meaning":"Command id unknown on this host build."},{"code":"ahcp.conflict","http_status_hint":409,"retryable":false,"meaning":"State conflict (e.g. wrong tab active, concurrent mutation)."},{"code":"ahcp.rate_limited","http_status_hint":429,"retryable":true,"meaning":"Host or remote rate limit."},{"code":"ahcp.internal","http_status_hint":500,"retryable":true,"meaning":"Unexpected internal error."}],"result_envelope":{"description":"Recommended host result envelope for every command invocation.","type":"object","required":["command_id","ok","code"],"properties":{"command_id":{"type":"string"},"ok":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"},"output":{},"retryable":{"type":"boolean"},"evidence_refs":{"type":"array","items":{"type":"string"}},"duration_ms":{"type":"integer"}},"example_ok":{"command_id":"chrome.nav.open_url","ok":true,"code":"ahcp.ok","output":{"final_url":"https://example.com","title":"Example Domain"},"duration_ms":412},"example_err":{"command_id":"chrome.nav.open_url","ok":false,"code":"ahcp.ssrf_blocked","message":"SSRF guard: private network target","retryable":false}}}