phacility/phabricator · warning · PhutilArgumentUsageException
Specify the name of exactly one object to show policy inform
Error message
Specify the name of exactly one object to show policy information for.
What it means
The show workflow accepts a wildcard list of object names but renders exactly one; when count($obj_names) > 1 it throws this usage exception right after the empty check.
Source
Thrown at src/applications/policy/management/PhabricatorPolicyManagementShowWorkflow.php:29
->setArguments(
array(
array(
'name' => 'objects',
'wildcard' => true,
),
));
}
public function execute(PhutilArgumentParser $args) {
$console = PhutilConsole::getConsole();
$viewer = $this->getViewer();
$obj_names = $args->getArg('objects');
if (!$obj_names) {
throw new PhutilArgumentUsageException(
pht('Specify the name of an object to show policy information for.'));
} else if (count($obj_names) > 1) {
throw new PhutilArgumentUsageException(
pht(
'Specify the name of exactly one object to show policy information '.
'for.'));
}
$object = id(new PhabricatorObjectQuery())
->setViewer($viewer)
->withNames($obj_names)
->executeOne();
if (!$object) {
$name = head($obj_names);
throw new PhutilArgumentUsageException(
pht(
"No such object '%s'!",
$name));
}
View on GitHub (pinned to 5720a38cfe)
Solutions
- Invoke the command once per object, passing exactly one name each time.
Example fix
# before ./bin/policy show T1 T2 # after ./bin/policy show T1 && ./bin/policy show T2
Defensive patterns
Strategy: validation
Validate before calling
#!/bin/sh
[ "$#" -eq 1 ] || { echo 'pass exactly one object name' >&2; exit 64; }
exec ./bin/policy show "$@" Prevention
- Quote and count expanded globs before passing them as object names.
- Loop over candidates and call the workflow once per name.
When it happens
Trigger: Running ./bin/policy show T1 T2 with two or more names, often via a shell glob that matched several objects.
Common situations: Globbing monograms in scripts and pasting several names expecting batch output.
Related errors
- Specify the name of exactly one object to unlock.
- You must specify the path to a public keyfile with %s.
- You must specify the path to a pkcs8 keyfile with %s.
- You must specify the username of the account to recover.
- You can only recover the username for one account.
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/035afc08f136ac3d.
Report an issue: GitHub.