paperclipai/paperclip · error · Error
Selector ' ' is ambiguous (matches both an ID and a…
Error message
Selector '${selector}' is ambiguous (matches both an ID and a shortname). Re-run with --by id or --by prefix. What it means
In auto mode the selector matched both a company ID and a different company's issue prefix, so the deletion target is ambiguous and the guard demands an explicit --by mode.
Solutions
- Disambiguate with --by id or --by prefix.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cli/src/commands/client/company.ts:1300 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18).
Data as JSON: /api/errors/aa0a95dae133e4e5.
Report an issue: GitHub.
Appendix: source
Thrown at cli/src/commands/client/company.ts:1300
const idMatch = companies.find((company) => company.id === selector);
const prefixMatch = companies.find((company) => matchesPrefix(company, selector));
if (by === "id") {
if (!idMatch) {
throw new Error(`No company found by ID '${selector}'.`);
}
return idMatch;
}
if (by === "prefix") {
if (!prefixMatch) {
throw new Error(`No company found by shortname/prefix '${selector}'.`);
}
return prefixMatch;
}
if (idMatch && prefixMatch && idMatch.id !== prefixMatch.id) {
throw new Error(
`Selector '${selector}' is ambiguous (matches both an ID and a shortname). Re-run with --by id or --by prefix.`,
);
}
if (idMatch) return idMatch;
if (prefixMatch) return prefixMatch;
throw new Error(
`No company found for selector '${selector}'. Use company ID or issue prefix (for example PAP).`,
);
}
export function assertDeleteConfirmation(company: Company, opts: CompanyDeleteOptions): void {
if (!opts.yes) {
throw new Error("Deletion requires --yes.");
}
const confirm = opts.confirm?.trim();View on GitHub (pinned to 120ae5428f)