can1357/oh-my-pi · error
no tasks matched the requested filters
Error message
no tasks matched the requested filters
What it means
After loading the dataset and applying include/exclude filters, main requires at least one task to run (unless --list was passed). If the filter set matches zero tasks, the run would silently do nothing, so it throws instead.
Source
Thrown at packages/metaharness/src/tb/cli.ts:348
startedAt,
finishedAt: Date.now(),
};
}
export async function main(argv: string[]): Promise<void> {
const config = parseArgs(argv);
if (config.help) {
console.log(HELP);
return;
}
fs.mkdirSync(config.jobsDir, { recursive: true });
const tasksDir = await resolveDataset(config.dataset, path.join(config.jobsDir, "_dataset"));
const tasks = await loadTasks(tasksDir, { include: config.include, exclude: config.exclude });
if (config.list) {
for (const task of tasks) console.log(task.name);
return;
}
if (tasks.length === 0) throw new Error("no tasks matched the requested filters");
const providers = [...new Set(config.models.map(model => model.slice(0, model.indexOf("/"))))];
const gateway: GatewayConfig = {
url: config.gatewayUrl,
token: config.gatewayToken,
providers,
openrouterVariant: config.openrouterVariant,
};
await probeGateway(config.gatewayUrl);
console.log(`vmon: checking ${config.vmonUrl}`);
await preflightVmon(config.vmonUrl, config.vmonToken);
const vmon: VmonConfig = {
url: config.vmonUrl,
token: config.vmonToken,
arch: "x64",
};
const binaries = await prepareAgentBinaries({
arches: [vmon.arch],View on GitHub (pinned to 9690622007)
Solutions
- Run with --list to print available task names and adjust filters
- Fix or remove --include/--exclude patterns so at least one task matches
- Verify the dataset was resolved to the expected version (task names may differ)
Example fix
// before tb run --dataset ./tb-tasks --include 'old-task-name' // after tb run --dataset ./tb-tasks --list # find real names tb run --dataset ./tb-tasks --include 'hello-world'
Defensive patterns
Strategy: validation
Validate before calling
const tasks = await loadTasks(tasksDir, { include, exclude });
if (tasks.length === 0) {
console.error("No tasks matched; available:", (await loadTasks(tasksDir, {})).map(t => t.name));
process.exit(1);
} Prevention
- Run with --list first to confirm filter matches
- Keep include/exclude globs minimal and tested
- Re-verify patterns after dataset updates
When it happens
Trigger: Calling main with --include/--exclude patterns that match no task names in the resolved dataset, e.g. --include 'nonexistent-*' or an exclude that filters out everything.
Common situations: Task names renamed upstream in the Terminal-Bench repo; overly specific include globs; exclude patterns left over from a previous run; pointing --dataset at a different/older dataset.
Related errors
- --list-details, --exec, and --exec-batch are not supported b
- positional paths cannot be combined with --search-path
- unknown file type: {value}
- invalid size: {value}
- err.to_string() (size parse error)
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/6e8d545d50526bd1.
Report an issue: GitHub.