{"record":{"id":"bd3916bf31a2e255","repo":"zeroclaw-labs/zeroclaw","slug":"plugin-store-linker-http-mismatch-store-httpclien","errorCode":null,"errorMessage":"plugin store/linker http mismatch: store HttpClient={store_has_http}, linker wasi:http={linker_has_http}; refusing to instantiate","messagePattern":"plugin store/linker http mismatch: store HttpClient=(.+?), linker wasi:http=(.+?); refusing to instantiate","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-plugins/src/component.rs","lineNumber":264,"sourceCode":"        \"failed to add WASI imports to plugin linker\",\n    )\n}\n\n/// Wire the outbound `wasi:http` surface into a plugin linker. Only call this\n/// for a linker that backs stores built with the `HttpClient` permission; the\n/// store's `WasiHttpView::http` panics otherwise, which keeps a permission\n/// mismatch from silently granting network access.\npub fn add_wasi_http(linker: &mut wasmtime::component::Linker<PluginState>) -> Result<()> {\n    wt(\n        wasmtime_wasi_http::p2::add_only_http_to_linker_async(linker),\n        \"failed to add wasi:http imports to plugin linker\",\n    )\n}\n\npub fn ensure_http_coherent(store: &Store<PluginState>, linker_has_http: bool) -> Result<()> {\n    let store_has_http = store.data().http_enabled();\n    if store_has_http != linker_has_http {\n        anyhow::bail!(\n            \"plugin store/linker http mismatch: store HttpClient={store_has_http}, \\\n             linker wasi:http={linker_has_http}; refusing to instantiate\"\n        );\n    }\n    Ok(())\n}\n\npub fn engine() -> &'static Engine {\n    static ENGINE: OnceLock<Engine> = OnceLock::new();\n    ENGINE.get_or_init(|| {\n        let mut config = Config::new();\n        config.consume_fuel(true);\n        Engine::new(&config).expect(\"async-capable wasmtime engine\")\n    })\n}\n\n/// Build a Wasmtime store whose imports are derived from one admitted scope.\npub(crate) fn new_store(spec: PluginStoreSpec) -> Store<PluginState> {","sourceCodeStart":246,"sourceCodeEnd":282,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-plugins/src/component.rs#L246-L282","documentation":"Error \"plugin store/linker http mismatch: store HttpClient={store_has_http}, linker wasi:http={linker_has_http}; refusing to instantiate\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-plugins/src/component.rs:264 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Align store and linker HTTP capability: either enable wasi:http on both or disable on both, then rebuild the plugin host config."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}