phacility/phabricator · error · PhutilArgumentUsageException
No object with name "%s" could be loaded.
Error message
No object with name "%s" could be loaded.
What it means
Thrown when one of the names passed via `--object`/`--container` cannot be resolved by PhabricatorObjectQuery. Names are monograms (T123, D45, P7), raw PHIDs, or object identifiers; resolution runs with the CLI actor's viewer context, so objects the acting user cannot see resolve to nothing and are reported as unloadable, indistinguishable from nonexistent ones.
Source
Thrown at src/infrastructure/daemon/workers/management/PhabricatorWorkerManagementWorkflow.php:287
pht(
'Object "%s" is specified more than once. Specify only unique '.
'objects.',
$name));
}
$seen_names[$name] = true;
}
$object_query = id(new PhabricatorObjectQuery())
->setViewer($viewer)
->withNames($names);
$object_query->execute();
$name_map = $object_query->getNamedResults();
$phid_map = array();
foreach ($names as $name) {
if (!isset($name_map[$name])) {
throw new PhutilArgumentUsageException(
pht(
'No object with name "%s" could be loaded.',
$name));
}
$phid = $name_map[$name]->getPHID();
if (isset($phid_map[$phid])) {
throw new PhutilArgumentUsageException(
pht(
'Names "%s" and "%s" identify the same object. Specify only '.
'unique objects.',
$name,
$phid_map[$phid]));
}
$phid_map[$phid] = $name;
}View on GitHub (pinned to 5720a38cfe)
Solutions
- Verify the monogram resolves in the web UI with the same acting user
- Correct typos in the name or use the full PHID form
- Run the command as a user who can see the object (e.g. `./bin/worker` as the control daemon user, not a restricted account)
Example fix
# before ./bin/worker retry --object T99 --class X # after ./bin/worker retry --object T99 --class X # only after confirming T99 exists and is visible; otherwise use the correct monogram/PHID
Defensive patterns
Strategy: validation
Validate before calling
// Resolve names to PHIDs via conduit first
$result = $client->callMethod('phid.lookup', array(
'names' => $names,
));
$unresolved = array_diff($names, array_keys($result));
if ($unresolved) {
throw new RuntimeException(
'Unresolvable object names: '.implode(', ', $unresolved));
} Type guard
function isResolvableObjectName($name) {
// monogram (T123, D45, P7...), PHID, or callsign-based id
return (bool) preg_match('/^(PHID-[A-Z]{4}-[a-z0-9]+|[A-Z]{1,2}\d+)$/', $name);
} Prevention
- Validate monogram/PHID syntax before passing names to CLI or conduit
- Run CLI worker commands as the control/daemon user so object visibility matches the daemon's view
- Resolve names to PHIDs once up front and operate on PHIDs thereafter
When it happens
Trigger: `./bin/worker retry --object T999999999 --class X` (no such task); passing a malformed monogram like `X123`; passing a PHID with a bad format; running as a restricted user/cluster node whose viewer cannot see the object (policies or 'policy.policies' configuration).
Common situations: Typos in monograms; IDs taken from another install or a stale import; running the CLI in a multi-node setup where the viewer is the omnipotent daemon user vs a limited account; objects locked behind policy rules like confidential projects.
Related errors
- No task with ID "%s" matches the constraints!
- Names "%s" and "%s" identify the same object. Specify only u
- No public key exists with ID "%s".
- Service "%s" does not exist or could not be loaded!
- Unable to load Calendar import with ID "%s".
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/70ab6d19fe0a2224.
Report an issue: GitHub.