Trove / Guides
Troubleshooting and limits
Fixes for common Trove problems: missing indexes, refused entries, stale skills, provider and ship errors, plus the known limits of the current code.
On this page
- First principles
- The index
- No index found. Run: trove index, but you already indexed
- Error: No such file or directory (os error 2)
- Every run reports all files as stale
- Deleted files still appear in .trove/
- Query results include .claude/ files
- Asking
- No symbols or modules in trove ask
- The first trove ask is slow
- Good sources are missing
- retrieval only (...) in the footer
- Writing memory
- no trove found at ... create one first
- entry '<slug>' already exists ...; rerun with --update to replace it
- unknown type '<type>'; expected one of ...
- refusing: possible secret at line <n> (...)
- --section needs a sectioned project trove
- provide --body or pipe the entry body on stdin
- A rendered skill does not show a new entry
- The plugin
- /trove:query fails outside the Trove repository
- No engine index at ... Run the indexer first (/trove:index).
- trove.sh context needs jq or python3 to read .trove/.
- Skills from a manual install cannot find trove.sh
- Permission denied (publickey) when adding the marketplace
- The marketplace is listed as anishfyi-trove
- Handoff docs
- ... is not empty and was not written by trove-ship; pass --force or pick another --out
- refusing to write: <n> high-confidence secret(s) survived redaction
- agent review of <file> failed; nothing was written
- Conventions are missing from conventions.md
- The tool catalog
- trove tools ls describes ls
- A tool has no summary
- Exit codes
- Limits by design
Each entry below names the symptom you see, why it happens, and what to do.
First principles
Most Trove problems come from one of three places: which folder a command treats as the repository, which files exist yet (an index, a trove, a cache), and a guard doing its job (a refused secret, a fail-closed ship). Check those three before anything else. The messages quoted below are printed by the current code.
The index
No index found. Run: trove index, but you already indexed
index, status and query use the current directory as the repository unless you pass --repo. Run from a subdirectory, they look for .trove/ there, and also leave an empty .trove/ behind. Run them from the repository root, or pass --repo /path/to/repo, and delete the stray .trove/. trove ask and trove remember search upward for the root, so they do not have this problem.
Error: No such file or directory (os error 2)
trove index was given a --repo path that does not exist. The other subcommands create the path instead, so a mistyped --repo with status prints No index found and leaves an empty .trove/ there.
Every run reports all files as stale
(134 stale rebuilt) on a second run is expected in the current code: the incremental check compares two different hashes that never match, so every run is a full rebuild. See Indexing a repository.
Deleted files still appear in .trove/
Re-indexing drops deleted files from symbols.json and the counts, but not their JavaScript Object Notation (JSON) files in .trove/modules/ and .trove/symbols/. Delete .trove/ and index again.
Query results include .claude/ files
Hidden files are indexed unless Git ignores them, so the project trove and its rendered skills show up as modules. This is expected. They are small and rank low for code questions.
Asking
No symbols or modules in trove ask
The footer says there is no engine index. Run trove index in the repository.
The first trove ask is slow
Without --no-tools, the first run builds the installed tool catalog. Later runs reuse the cache and rescan only changed folders. Pass --no-tools when you only want troves, docs and code.
Good sources are missing
Ranking is lexical. Use the words and identifiers the code uses, raise --limit (default 12) or --budget (default 1,500) when the footer shows many more matches than hits, and check the hit caps: at most 6 per kind and 3 tools.
retrieval only (...) in the footer
A provider was requested but the answer step failed, so ask printed the sources only. The message in brackets says why:
set ANTHROPIC_API_KEY (or ANTHROPIC_AUTH_TOKEN) to use --provider anthropic: export one of them.run curl (is it installed?): installcurl; the Anthropic and Ollama providers call it.ollama: ...or acurl:error: start Ollama, or setOLLAMA_HOST.`claude -p` failed: ...: thecmdprovider’s command failed; setTROVE_LLM_CMDto a command that reads standard input.redaction refused: ...: a secret-shaped string survived redaction, so nothing was sent. Find the entry or doc it came from and remove the secret.
Writing memory
no trove found at ... create one first
trove remember needs an existing trove. Run /trove:init in Claude Code, or trove.sh init.
entry '<slug>' already exists ...; rerun with --update to replace it
The title produces a slug that is already taken. Pass --update to replace the entry (its created date is kept), or choose another title.
unknown type '<type>'; expected one of ...
--type takes exactly convention, decision, gotcha, preference, reference, project, snippet or context.
refusing: possible secret at line <n> (...)
The entry looks like it contains a credential, so nothing was written. Rewrite it without the value; keep what was non-obvious, such as where the real value lives.
--section needs a sectioned project trove
--section only works with a project trove. Without one, trove remember writes into the flat personal trove.
provide --body or pipe the entry body on stdin
Give the body with --body "..." or pipe it in.
A rendered skill does not show a new entry
trove remember writes the entry and the index line but does not re-render the skill. Run trove.sh render <section>, or start a new session: the SessionStart hook re-renders any section that changed. If .claude/skills/ did not exist when the session started, run /reload-skills.
The plugin
/trove:query fails outside the Trove repository
The query skill calls cargo run -p trove-cli, which only resolves inside a Trove checkout. Install the binary with cargo install --path crates/trove-cli and run trove query, or ask Claude to use the binary.
No engine index at ... Run the indexer first (/trove:index).
trove.sh context needs .trove/manifest.json. Run trove index first.
trove.sh context needs jq or python3 to read .trove/.
Install either one.
Skills from a manual install cannot find trove.sh
The skills call "${CLAUDE_PLUGIN_ROOT}/scripts/trove.sh", a variable Claude Code sets only for plugins. Install through the marketplace, or tell Claude to use plugins/trove/scripts/trove.sh from your clone.
Permission denied (publickey) when adding the marketplace
You have no Secure Shell (SSH) key on GitHub. Use /plugin marketplace add https://github.com/anishfyi/trove.git.
The marketplace is listed as anishfyi-trove
It was renamed to velofy-trove on 2026-09-12. Install with /plugin install trove@velofy-trove.
Handoff docs
... is not empty and was not written by trove-ship; pass --force or pick another --out
Ship only replaces folders it created. Choose an empty folder, or pass --force once you are sure nothing there matters.
refusing to write: <n> high-confidence secret(s) survived redaction
Exit code 2, nothing written. The lines after it name the output document, line and detector. Find the source, remove the secret and rotate it, or exclude the source file in .troveignore. See Handoff docs with trove ship.
agent review of <file> failed; nothing was written
The agent command failed or timed out. Check that claude, codex or pi runs non-interactively, or raise --agent-timeout.
Conventions are missing from conventions.md
Ship includes entries of type preference, or entries tagged convention. Add the tag to convention entries.
The tool catalog
trove tools ls describes ls
A tool name wins over a subcommand word it does not match. To list the catalog, run trove tools or trove tools list.
A tool has no summary
It has no man page. Run trove tools refresh --probe, or trove tools <name> for that one tool.
Exit codes
0: success.1: a runtime error, printed asError: <message>(ortrove ship: <message>).2: an argument error reported with a usage line, or a fail-closedtrove ship.
Limits by design
- No embeddings. Retrieval is lexical and misses synonyms. In the repository’s evaluation,
trove askfinds the expected item in its top five for every exact-term and symbol query and for half of the synonym queries. - No model in indexing. Summaries list names and flags; they do not explain intent.
- No prebuilt binaries. Build from source with Cargo.
- Platforms. Continuous integration (CI) builds and tests on Ubuntu and macOS. The tool catalog knows the macOS and Linux install locations.
- No call graph. The dependency graph holds import edges only.