{"record":{"id":"9ffc664533b7398d","repo":"tinyhumansai/openhuman","slug":"worker-protocol-authentication-failed","errorCode":null,"errorMessage":"{} worker protocol authentication failed","messagePattern":"(.+?) worker protocol authentication failed","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/runtime/pool/worker.rs","lineNumber":199,"sourceCode":"        let ready: PoolReadyLine = serde_json::from_str(&ready_line)\n            .with_context(|| format!(\"parsing worker ready line: {ready_line}\"))?;\n        if !ready.ready {\n            bail!(\n                \"{} worker failed to start: {}\",\n                launch.lang.id(),\n                ready.error.unwrap_or_else(|| \"unknown\".to_string())\n            );\n        }\n        if ready.protocol != Some(PROTOCOL_VERSION) {\n            bail!(\n                \"{} worker protocol mismatch: expected {}, got {:?}\",\n                launch.lang.id(),\n                PROTOCOL_VERSION,\n                ready.protocol\n            );\n        }\n        if ready.protocol_token != expected_token {\n            bail!(\"{} worker protocol authentication failed\", launch.lang.id());\n        }\n        tracing::info!(lang = launch.lang.id(), \"[runtime_pool] worker ready\");\n\n        Ok(Self {\n            launch: launch.clone(),\n            _child: child,\n            stdin,\n            responses: lines,\n            jobs_done: 0,\n            last_used: Instant::now(),\n        })\n    }\n\n    /// Submit one job and await its response.\n    ///\n    /// `hard_timeout` is a **safety net** above the worker's own soft deadline:\n    /// the worker aborts a job at `req.timeout_ms` and still replies, so this\n    /// only fires if the worker itself has wedged. On `Err` the caller must","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/runtime/pool/worker.rs#L181-L217","documentation":"The worker completed the handshake but failed the token authentication step — the launch token handed to the process was not echoed back correctly, indicating a corrupted or foreign worker binary on the other end of the pipe.","triggerScenarios":"Thrown at src/openhuman/runtime/pool/worker.rs:199 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-provision the worker runtime (its code may be stale or tampered)","Check for another process squatting on the spawn path"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}