{"record":{"id":"830f44c459b5222a","repo":"zeroclaw-labs/zeroclaw","slug":"memory-backend-is-none-disabled-no-entries-to","errorCode":null,"errorMessage":"Memory backend is 'none' (disabled). No entries to manage.","messagePattern":"Memory backend is 'none' \\(disabled\\)\\. No entries to manage\\.","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/memory/cli.rs","lineNumber":61,"sourceCode":"        crate::MemoryCommands::List {\n            category,\n            session,\n            limit,\n            offset,\n        } => handle_list(config, category, session, limit, offset).await,\n        crate::MemoryCommands::Get { key } => handle_get(config, &key).await,\n        crate::MemoryCommands::Stats => handle_stats(config).await,\n        crate::MemoryCommands::Clear { key, category, yes } => {\n            handle_clear(config, key, category, yes).await\n        }\n        crate::MemoryCommands::Reindex => handle_reindex(config).await,\n    }\n}\n\nfn create_memory_with_embedder(config: &Config) -> Result<Box<dyn Memory>> {\n    let backend = backend_kind_from_dotted(&config.memory.backend);\n    if matches!(classify_memory_backend(&backend), MemoryBackendKind::None) {\n        bail!(\"Memory backend is 'none' (disabled). No entries to manage.\");\n    }\n    create_memory_from_config(config, None)\n}\n\nasync fn handle_reindex(config: &Config) -> Result<()> {\n    let mem = create_memory_with_embedder(config)?;\n    println!(\n        \"{} {}\",\n        style(\"→\").cyan(),\n        mt(\"cli-memory-reindexing\", \"Reindexing memory backend...\")\n    );\n    let count = mem.reindex().await?;\n    if count == 0 {\n        println!(\n            \"{} FTS rebuilt. No embeddings to fill in (either everything is already embedded or the backend has no embedder configured).\",\n            style(\"✓\").green()\n        );\n    } else {","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/src/memory/cli.rs#L43-L79","documentation":"The memory reindex command needs an embedder-backed memory store, but the config sets memory.backend to the disabled 'none' backend (classify_memory_backend returns MemoryBackendKind::None). create_memory_with_embedder bails before ever constructing a store because there is nothing to index.","triggerScenarios":"Running `zeroclaw memory reindex` (the handle_reindex path) while config.memory.backend is \"none\". Any other backend value (sqlite, markdown, qdrant, lucid, postgres) proceeds to create_memory_from_config.","commonSituations":"Fresh install where memory is disabled by default; deliberately turning memory off earlier and forgetting; copying a minimal config template into a profile you later run reindex against; provisioning scripts that assume memory is enabled.","solutions":["Set memory.backend in the config to an enabled backend, e.g. \"sqlite\" (simplest local option), then re-run reindex","Pick the backend matching where your data lives: sqlite/lucid/postgres for full CRUD, markdown for file-based, qdrant for vector search","Confirm the backend string is exact — backend_kind_from_dotted parses dotted names; a typo can also classify as None","Re-run `zeroclaw memory reindex` after the config change"],"exampleFix":"# before\n[memory]\nbackend = \"none\"\n\n# after\n[memory]\nbackend = \"sqlite\"","handlingStrategy":"validation","validationCode":"// Check the backend kind before invoking reindex (mirrors create_memory_with_embedder):\nlet backend = backend_kind_from_dotted(&config.memory.backend);\nif matches!(classify_memory_backend(&backend), MemoryBackendKind::None) {\n    eprintln!(\"enable memory.backend before reindexing\");\n    return Ok(());\n}","typeGuard":null,"tryCatchPattern":"// Downcast-free: match on the message prefix 'Memory backend is' when wrapping the CLI,\n// and branch to a 'memory disabled' UX path instead of showing a failure.","preventionTips":["Set an explicit backend in every profile's config template","Assert memory.backend != \"none\" in setup scripts that plan to reindex","Keep a default like sqlite in base configs so memory is never silently off"],"tags":["memory","config","backend","disabled-feature"],"backgroundTag":"backend-not-configured","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}