{"record":{"id":"c532be5db2c078a4","repo":"atuinsh/atuin","slug":"atuin-history-tail-requires-atuin-to-be-built-wi","errorCode":null,"errorMessage":"`atuin history tail` requires Atuin to be built with the `daemon` feature","messagePattern":"`atuin history tail` requires Atuin to be built with the `daemon` feature","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/atuin/src/command/client/history.rs","lineNumber":1140,"sourceCode":"                )\n                .await?\n                {\n                    println!(\"{id}\");\n                }\n\n                Ok(())\n            }\n            Self::End {\n                id, exit, duration, ..\n            } => end_history_entry(settings, id, exit, duration).await,\n            Self::Tail => {\n                #[cfg(feature = \"daemon\")]\n                {\n                    return Self::handle_tail(settings).await;\n                }\n\n                #[cfg(not(feature = \"daemon\"))]\n                bail!(\"`atuin history tail` requires Atuin to be built with the `daemon` feature\");\n            }\n            cmd => {\n                let context = current_context().await?;\n\n                let db_path = &settings.db_path;\n                let record_store_path = &settings.record_store_path;\n\n                let db = Sqlite::new(db_path, Duration::try_from_secs_f64(settings.local_timeout)?)\n                    .await?;\n                let store = SqliteStore::new(\n                    record_store_path,\n                    Duration::try_from_secs_f64(settings.local_timeout)?,\n                )\n                .await?;\n\n                let encryption_key = paseto_v4::Key::try_load_or_generate(&settings.key_path)\n                    .context(\"could not load or generate encryption key\")?;\n","sourceCodeStart":1122,"sourceCodeEnd":1158,"githubUrl":"https://github.com/atuinsh/atuin/blob/c0c717ab04c881764bcad4b3d169a507e2432643/crates/atuin/src/command/client/history.rs#L1122-L1158","documentation":"The `atuin history tail` subcommand depends on the optional `daemon` feature. When the atuin binary was compiled without it, the tail code path is cfg'd out and running the command immediately fails with this guidance instead of silently doing nothing.","triggerScenarios":"Running `atuin history tail` with a binary built without the `daemon` cargo feature (the default feature set may exclude it, or an explicitly minimal build).","commonSituations":"Installing atuin from a distro package or crate build that disables the daemon feature; building with --no-default-features or a custom feature selection.","solutions":["Install/build atuin with the daemon feature enabled: cargo install atuin --features daemon","Use a distribution build that includes the daemon feature","Use an alternative (non-daemon) history query in the meantime"],"exampleFix":"// before\ncargo install atuin --no-default-features\n// after\ncargo install atuin --features daemon","handlingStrategy":"validation","validationCode":"// shell-side guard\natuin history tail --help 2>/dev/null || echo \"binary lacks daemon feature; rebuild with --features daemon\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Build/install atuin with the daemon feature enabled","Verify feature set of distro packages before relying on daemon commands","Check `atuin history tail --help` availability in install scripts"],"tags":["feature-flag","build","cli","daemon"],"backgroundTag":"feature-not-enabled","analyzedSha":"c0c717ab04c881764bcad4b3d169a507e2432643","analyzedAt":"2026-09-12T07:40:01.341Z","contentChangedAt":"2026-09-12T07:40:01.341Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}