quickwit-oss/quickwit · error
unknown tool subcommand
Error message
unknown tool subcommand `{subcommand}` What it means
The `quickwit tool` subcommand parser received a sub-subcommand that matches none of the registered tool operations (gc, local-ingest, local-search, extract-split, merge). The extracted subcommand name fell through the match arms to the error branch.
Solutions
- Run `quickwit tool --help` to list valid tool subcommands
- Check for typos or outdated subcommand names from older Quickwit versions
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at quickwit/quickwit-cli/src/tool.rs:240 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/8d90250218b445df.
Report an issue: GitHub.
Appendix: source
Thrown at quickwit/quickwit-cli/src/tool.rs:240
GarbageCollect(GarbageCollectIndexArgs),
LocalIngest(LocalIngestDocsArgs),
LocalSearch(LocalSearchArgs),
ExtractSplit(ExtractSplitArgs),
Merge(MergeArgs),
}
impl ToolCliCommand {
pub fn parse_cli_args(mut matches: ArgMatches) -> anyhow::Result<Self> {
let (subcommand, submatches) = matches
.remove_subcommand()
.context("failed to parse tool subcommand")?;
match subcommand.as_str() {
"gc" => Self::parse_garbage_collect_args(submatches),
"local-ingest" => Self::parse_local_ingest_args(submatches),
"local-search" => Self::parse_local_search_args(submatches),
"merge" => Self::parse_merge_args(submatches),
"extract-split" => Self::parse_extract_split_args(submatches),
_ => bail!("unknown tool subcommand `{subcommand}`"),
}
}
fn parse_local_ingest_args(mut matches: ArgMatches) -> anyhow::Result<Self> {
let config_uri = matches
.remove_one::<String>("config")
.map(|uri_str| Uri::from_str(&uri_str))
.expect("`config` should be a required arg.")?;
let index_id = matches
.remove_one::<String>("index")
.expect("`index` should be a required arg.");
let input_path_opt = if let Some(input_path) = matches.remove_one::<String>("input-path") {
Some(Uri::from_str(&input_path)?)
} else {
None
};
let input_format = matchesView on GitHub (pinned to a39730c5cd)