phacility/phabricator · error · Exception
No such object '%s'!
Error message
No such object '%s'!
What it means
The receiver accepted the address and loadMailReceiverObject($to, $user) tried to resolve the monogram to a concrete object; it returned null. Either the object does not exist (bad/typo'd monogram, stale ID) or it is not visible to the acting user, because the load runs with the --as user and Phabricator policy filtering applies.
Source
Thrown at src/applications/metamta/management/PhabricatorMailManagementReceiveTestWorkflow.php:162
if (!$receiver) {
throw new Exception(
pht("No configured mail receiver can accept mail to '%s'.", $to));
}
if (!($receiver instanceof PhabricatorObjectMailReceiver)) {
$class = get_class($receiver);
throw new Exception(
pht(
"Receiver '%s' accepts mail to '%s', but is not a ".
"subclass of PhabricatorObjectMailReceiver.",
$class,
$to));
}
$object = $receiver->loadMailReceiverObject($to, $user);
if (!$object) {
throw new Exception(pht("No such object '%s'!", $to));
}
$mail_key = PhabricatorMetaMTAMailProperties::loadMailKey($object);
$hash = PhabricatorObjectMailReceiver::computeMailHash(
$mail_key,
$user->getPHID());
$header_content['to'] = $to.'+'.$user->getID().'+'.$hash.'@test.com';
}
$received->setHeaders($header_content);
$received->setBodies(
array(
'text' => $body,
));
$received->save();View on GitHub (pinned to 5720a38cfe)
Solutions
- Open the object in the web UI while logged in as the --as user to confirm it exists and is visible to them.
- Fix the monogram (correct type letter and ID, e.g. T123, D456).
- Choose an object the acting user can see, or pass --as a project member.
Example fix
# before: object invisible to the acting user (or nonexistent) ./bin/mail receive-test --to T9999 --as outsider # after: existing, visible object ./bin/mail receive-test --to T123 --as alincoln
Defensive patterns
Strategy: validation
Validate before calling
// Resolve the object as the acting user before simulating delivery.
$object = id(new PhabricatorObjectQuery())
->setViewer($user)
->withNames(array($to)) // e.g. 'T123'
->executeOne();
if (!$object) {
// nonexistent or invisible to $user: fix the monogram or the actor
} Prevention
- Pick a public test object for mail-path testing.
- Remember policy filtering applies to simulated mail exactly as to real mail.
When it happens
Trigger: Passing --to T9999 when no such task exists; a typo'd monogram; the object exists but the --as user cannot see it (private project, restricted policy); monograms from another install.
Common situations: Testing inbound mail against a private object as a non-member actor; copy-pasted monograms across environments; objects deleted between composing and running the command.
Related errors
- No such object '%s'!
- Unable to load specified object ("%s").
- Use '%s' to specify the receiving object or email address.
- Use '--as' to specify the acting user.
- No such user '%s' exists.
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/9d18d0d3e7ec6b72.
Report an issue: GitHub.