phacility/phabricator · warning · PhutilArgumentUsageException
Type " " matches no indexable objects. Supported types are…
Error message
Type "%s" matches no indexable objects. Supported types are: %s.
What it means
Each --type value in `bin/search index` is matched case-insensitively as a substring against the class names of every PhabricatorIndexableInterface implementation. When a type string matches zero classes, this usage exception is thrown and its message enumerates every supported indexable class name, so you can copy an exact match from the list.
Solutions
- Read the error message - it prints the full list of supported class names
- Use a substring of a real class name from that list, e.g. `--type ManiphestTask` or the documented short form `--type task`
- Avoid overly short strings - they may match multiple classes and hit the sibling ambiguity error
Example fix
# before bin/search index --type ticket # after bin/search index --type ManiphestTask
Defensive patterns
Strategy: validation
Validate before calling
$classes = id(new PhutilClassMapQuery())
->setAncestorClass('PhabricatorIndexableInterface')
->execute();
$names = array_map('strtolower', array_map('get_class', $classes));
$needle = strtolower($type);
$matches = array_filter($names, function ($n) use ($needle) {
return strpos($n, $needle) !== false;
});
if (count($matches) === 0) {
// reject before invoking: no indexable class contains this string
} elseif (count($matches) > 1) {
// reject: ambiguous, require a more specific string
} Prevention
- Use documented short forms ("task", "commit", "revision") or full class names
- Reuse the class list printed by this very error to pick valid strings
- Pin type strings in scripts and re-validate them after adding applications
When it happens
Trigger: `bin/search index --type ticket` (not a Phabricator class), a misspelled or invented type name, a type valid on a different install/fork but absent here.
Common situations: Guessing type names instead of using documented ones; scripts ported from another install with custom applications; renamed classes after an upgrade or fork divergence.
Related errors
- Provide a list of objects to index (like "D123"), or a set…
- ' ' is not the name of a known object.
- Specify a query with --query.
- Type " " matches multiple indexable objects. Use a more…
- Type specification " " duplicates type specification " "…
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/dc6e423bac34ed89.
Report an issue: GitHub.
Appendix: source
Thrown at src/applications/search/management/PhabricatorSearchManagementIndexWorkflow.php:392
continue;
}
$matches_map[$type][] = $object_class;
$object_matches[$object_class] = $object;
}
}
$all_types = array();
foreach ($objects as $object) {
$all_types[] = get_class($object);
}
sort($all_types);
$type_list = implode(', ', $all_types);
foreach ($type_map as $type => $normalized_type) {
$matches = idx($matches_map, $type);
if (!$matches) {
throw new PhutilArgumentUsageException(
pht(
'Type "%s" matches no indexable objects. '.
'Supported types are: %s.',
$type,
$type_list));
}
if (count($matches) > 1) {
throw new PhutilArgumentUsageException(
pht(
'Type "%s" matches multiple indexable objects. Use a more '.
'specific string. Matching objects are: %s.',
$type,
implode(', ', $matches)));
}
}
return $object_matches;View on GitHub (pinned to 5720a38cfe)