phacility/phabricator · error · PhutilArgumentUsageException
No email exists with address "%s"!
Error message
No email exists with address "%s"!
What it means
Thrown by `bin/auth verify` when the supplied address does not exist in the user_email table. The workflow loads the record directly via `id(new PhabricatorUserEmail())->loadOneWhere('address = %s', $address)`; a null result aborts with this PhutilArgumentUsageException before the owning user is resolved or the verification editor runs. The match is exact (including case and plus-addressing), and it does not fuzzy-match or search disabled addresses differently.
Source
Thrown at src/applications/auth/management/PhabricatorAuthManagementVerifyWorkflow.php:39
));
}
public function execute(PhutilArgumentParser $args) {
$emails = $args->getArg('email');
if (!$emails) {
throw new PhutilArgumentUsageException(
pht('You must specify the email to verify.'));
} else if (count($emails) > 1) {
throw new PhutilArgumentUsageException(
pht('You can only verify one address at a time.'));
}
$address = head($emails);
$email = id(new PhabricatorUserEmail())->loadOneWhere(
'address = %s',
$address);
if (!$email) {
throw new PhutilArgumentUsageException(
pht(
'No email exists with address "%s"!',
$address));
}
$viewer = $this->getViewer();
$user = id(new PhabricatorPeopleQuery())
->setViewer($viewer)
->withPHIDs(array($email->getUserPHID()))
->executeOne();
if (!$user) {
throw new Exception(pht('Email record has invalid user PHID!'));
}
$editor = id(new PhabricatorUserEditor())
->setActor($viewer)
->verifyEmail($user, $email);View on GitHub (pinned to 5720a38cfe)
Solutions
- Confirm the exact stored address: `SELECT phid, address, isVerified FROM user_email WHERE address LIKE '%example.com%';`.
- If the address is genuinely absent, have the user add it under Settings -> Email Addresses first, then run `bin/auth verify <exact-address>`.
- Re-run with the exact byte-for-byte address found in the database.
- Check you are running against the correct environment's database.
Example fix
// before $ bin/auth verify Alice@Example.com No email exists with address "Alice@Example.com"! // after $ bin/auth verify alice@example.com
Defensive patterns
Strategy: validation
Validate before calling
$email = id(new PhabricatorUserEmail())->loadOneWhere(
'address = %s',
$address);
if (!$email) {
// the address is not on file: have the user add it in Settings first
} Prevention
- Match the address byte-for-byte against user_email before verifying.
- Ensure the user has actually added the address under Settings -> Email Addresses first.
- Prefer `bin/user lookup <email>` to resolve the account before choosing which address to verify.
When it happens
Trigger: Running `bin/auth verify <address>` where the address was never added to any account: typo, the user's primary address is different, the address belongs to a user in a different install, or the email row was purged by a removal workflow.
Common situations: Verifying an address the user typed into a support ticket but never added under Settings -> Email Addresses; case mismatch (Alice@ vs alice@); a migrated install where email rows were not carried over; the admin is on the wrong environment.
Related errors
- Failed to find an OAuth client with id %s.
- No user exists with username "%s".
- Failed to find an OAuth client with ID %s.
- You must specify the email to verify.
- You can only verify one address at a time.
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/5091e87c12f63360.
Report an issue: GitHub.