{"record":{"id":"1bb2b2f238d16adb","repo":"zeroclaw-labs/zeroclaw","slug":"channel-whatsapp-web-feature-missing-error","errorCode":"channel-whatsapp-web-feature-missing-error","errorMessage":"WhatsApp Web channel requires the 'whatsapp-web' feature. Enable with: cargo build --features whatsapp-web (or, if installed to PATH: cargo install --path . --force --locked --features whatsapp-web)","messagePattern":"WhatsApp Web channel requires the 'whatsapp-web' feature\\. Enable with: cargo build --features whatsapp-web \\(or, if installed to PATH: cargo install --path \\. --force --locked --features whatsapp-web\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-channels/src/whatsapp_web.rs","lineNumber":3305,"sourceCode":"    fn role(&self) -> ::zeroclaw_api::attribution::Role {\n        ::zeroclaw_api::attribution::Role::Channel(\n            ::zeroclaw_api::attribution::ChannelKind::WhatsappWeb,\n        )\n    }\n    fn alias(&self) -> &str {\n        \"whatsapp\"\n    }\n}\n\n#[cfg(not(feature = \"whatsapp-web\"))]\n#[async_trait]\nimpl Channel for WhatsAppWebChannel {\n    fn name(&self) -> &str {\n        \"whatsapp\"\n    }\n\n    async fn send(&self, _message: &SendMessage) -> Result<()> {\n        anyhow::bail!(i18n::get_required_cli_string(\n            \"channel-whatsapp-web-feature-missing-error\"\n        ));\n    }\n\n    async fn listen(&self, _tx: tokio::sync::mpsc::Sender<ChannelMessage>) -> Result<()> {\n        anyhow::bail!(i18n::get_required_cli_string(\n            \"channel-whatsapp-web-feature-missing-error\"\n        ));\n    }\n\n    async fn health_check(&self) -> bool {\n        false\n    }\n\n    async fn start_typing(&self, _recipient: &str) -> Result<()> {\n        anyhow::bail!(i18n::get_required_cli_string(\n            \"channel-whatsapp-web-feature-missing-error\"\n        ));","sourceCodeStart":3287,"sourceCodeEnd":3323,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-channels/src/whatsapp_web.rs#L3287-L3323","documentation":"The WhatsApp Web channel depends on the non-default `whatsapp-web` cargo feature (heavy native/protocol dependencies). When zeroclaw is built without it, a stub `Channel` implementation is compiled whose `send` fails immediately with this i18n-localized message (Fluent key `channel-whatsapp-web-feature-missing-error`). Nothing is wrong at runtime — the binary simply does not contain the WhatsApp Web code.","triggerScenarios":"Configuring the WhatsApp channel in WhatsApp Web mode in a build produced without `--features whatsapp-web`, then calling `send` on it.","commonSituations":"Installing from a package or plain `cargo install`/`cargo build` without the feature flag; CI build flags differing from the local dev build; the feature accidentally dropped from an install script.","solutions":["Rebuild with the feature: `cargo build --features whatsapp-web` (add `--release` for release builds).","For PATH installs, use the exact command from the message: `cargo install --path . --force --locked --features whatsapp-web`.","Alternatively, remove the WhatsApp Web channel from config and use the Cloud API `whatsapp` channel, which needs no feature."],"exampleFix":"# before\ncargo build --release\n\n# after\ncargo build --release --features whatsapp-web\n# for a PATH-installed binary:\ncargo install --path . --force --locked --features whatsapp-web","handlingStrategy":"validation","validationCode":"// Fail fast at startup instead of on first send\nassert!(cfg!(feature = \"whatsapp-web\"),\n    \"config enables whatsapp-web but this binary was built without the feature\");","typeGuard":"fn whatsapp_web_feature_enabled() -> bool {\n    cfg!(feature = \"whatsapp-web\")\n}","tryCatchPattern":"if let Err(e) = channel.send(&msg).await {\n    if e.to_string().contains(\"whatsapp-web' feature\") {\n        anyhow::bail!(\"binary lacks whatsapp-web support; rebuild with cargo build --features whatsapp-web\");\n    }\n    return Err(e);\n}","preventionTips":["Pin `--features whatsapp-web` in install scripts, Dockerfiles, and CI build commands.","Add a startup smoke test that sends (or health-checks) each configured channel.","Document which features each deployment profile enables so config and build stay in sync."],"tags":["whatsapp-web","cargo-feature","build-config","rust"],"backgroundTag":"missing-compile-feature","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}