{"record":{"id":"2199d0482c63d906","repo":"openai/codex","slug":"remote-control-response-kind-failed-at-url-2199d0","errorCode":null,"errorMessage":"remote control {response_kind} failed at `{url}`: HTTP {status}, {headers_str}, body: {body_preview}","messagePattern":"remote control (.+?) failed at `(.+?)`: HTTP (.+?), (.+?), body: (.+?)","errorType":"http","errorClass":"RemoteControlServerRequestError","httpStatus":null,"severity":"error","filePath":"codex-rs/app-server-transport/src/transport/remote_control/server_api.rs","lineNumber":51,"sourceCode":"    status: Option<StatusCode>,\n    retry_at: Option<OffsetDateTime>,\n}\n\nimpl RemoteControlServerRequestError {\n    fn io_error(\n        message: String,\n        status: Option<StatusCode>,\n        retry_at: Option<OffsetDateTime>,\n        timed_out: bool,\n    ) -> io::Error {\n        let kind = match status {\n            Some(StatusCode::UNAUTHORIZED | StatusCode::FORBIDDEN) => ErrorKind::PermissionDenied,\n            Some(StatusCode::NOT_FOUND) => ErrorKind::NotFound,\n            Some(status) if timed_out && !status.is_client_error() => ErrorKind::TimedOut,\n            None if timed_out => ErrorKind::TimedOut,\n            Some(_) | None => ErrorKind::Other,\n        };\n        io::Error::new(\n            kind,\n            Self {\n                message,\n                status,\n                retry_at,\n            },\n        )\n    }\n\n    fn is_transient(&self, kind: ErrorKind) -> bool {\n        kind == ErrorKind::TimedOut\n            || self.status.is_none()\n            || self.status.is_some_and(|status| {\n                status == StatusCode::TOO_MANY_REQUESTS || status.is_server_error()\n            })\n    }\n}\n","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/app-server-transport/src/transport/remote_control/server_api.rs#L33-L69","documentation":"Constructs an io::Error from RemoteControlServerRequestError::io_error after a remote-control backend HTTP request (enroll, refresh, pair, etc.) returned a non-success response. The message records the operation kind, URL, HTTP status, response headers, and a body preview. The mapped ErrorKind carries semantics: UNAUTHORIZED/FORBIDDEN -> PermissionDenied, NOT_FOUND -> NotFound, timeout without client error -> TimedOut, otherwise InvalidInput/other.","triggerScenarios":"Thrown at codex-rs/app-server-transport/src/transport/remote_control/server_api.rs:51 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the embedded HTTP status: 401/403 means re-authenticate (re-login / refresh auth) before retrying","4xx other than auth means the request payload or URL is wrong — fix the caller; 5xx or timeouts can be retried with backoff honoring any retry-at header"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}