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

  1. Open the object in the web UI while logged in as the --as user to confirm it exists and is visible to them.
  2. Fix the monogram (correct type letter and ID, e.g. T123, D456).
  3. 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

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


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/9d18d0d3e7ec6b72. Report an issue: GitHub.