{"record":{"id":"faf4ff52bec6da38","repo":"tinyhumansai/openhuman","slug":"refusing-to-bind-on-non-loopback-address-resolved","errorCode":null,"errorMessage":"refusing to bind on non-loopback address {resolved_host} without an explicit operator-supplied RPC token ({})","messagePattern":"refusing to bind on non-loopback address (.+?) without an explicit operator-supplied RPC token \\((.+?)\\)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/core/runtime/builder.rs","lineNumber":692,"sourceCode":"        // so treating it as \"explicit\" would be fail-open.\n        if crate::openhuman::security::pairing::is_public_bind(&resolved_host)\n            && !self.has_operator_token\n        {\n            log::error!(\n                \"[core] SECURITY: refusing to bind on public address {resolved_host} without an \\\n                 explicit operator-supplied RPC token. Set {} in your environment (or hand the \\\n                 bearer in-memory via the embedded core handle) to secure the RPC endpoint.\",\n                crate::core::auth::CORE_TOKEN_ENV_VAR\n            );\n            eprintln!(\n                \"\\n\\x1b[1;31m[SECURITY]\\x1b[0m Refusing to bind on {resolved_host} without {}.\\n\\\n                 The auto-generated {{workspace}}/core.token does NOT secure a public bind —\\n\\\n                 remote clients cannot read it. Set {} in your environment to secure the\\n\\\n                 RPC endpoint, or bind on a loopback address.\\n\",\n                crate::core::auth::CORE_TOKEN_ENV_VAR,\n                crate::core::auth::CORE_TOKEN_ENV_VAR\n            );\n            anyhow::bail!(\n                \"refusing to bind on non-loopback address {resolved_host} without an explicit \\\n                 operator-supplied RPC token ({})\",\n                crate::core::auth::CORE_TOKEN_ENV_VAR\n            );\n        }\n\n        let preferred_port = resolved_port;\n        let host = resolved_host;\n        let pick = crate::openhuman::platform::connectivity::rpc::pick_listen_port_for_host(\n            host.as_str(),\n            preferred_port,\n        )\n        .await\n        .map_err(|err| {\n            log::error!(\"[core] Failed to bind to {host}:{preferred_port}: {err}\");\n            anyhow::Error::new(err)\n        })?;\n        let listen_port = pick.port;","sourceCodeStart":674,"sourceCodeEnd":710,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/src/core/runtime/builder.rs#L674-L710","documentation":"Error \"refusing to bind on non-loopback address {resolved_host} without an explicit operator-supplied RPC token ({})\" thrown in tinyhumansai/openhuman.","triggerScenarios":"Thrown at src/core/runtime/builder.rs:692 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}