{"record":{"id":"5091e87c12f63360","repo":"phacility/phabricator","slug":"no-email-exists-with-address-s","errorCode":null,"errorMessage":"No email exists with address \"%s\"!","messagePattern":"No email exists with address \"(.+?)\"!","errorType":"console","errorClass":"PhutilArgumentUsageException","httpStatus":null,"severity":"error","filePath":"src/applications/auth/management/PhabricatorAuthManagementVerifyWorkflow.php","lineNumber":39,"sourceCode":"        ));\n  }\n\n  public function execute(PhutilArgumentParser $args) {\n    $emails = $args->getArg('email');\n    if (!$emails) {\n      throw new PhutilArgumentUsageException(\n        pht('You must specify the email to verify.'));\n    } else if (count($emails) > 1) {\n      throw new PhutilArgumentUsageException(\n        pht('You can only verify one address at a time.'));\n    }\n    $address = head($emails);\n\n    $email = id(new PhabricatorUserEmail())->loadOneWhere(\n      'address = %s',\n      $address);\n    if (!$email) {\n      throw new PhutilArgumentUsageException(\n        pht(\n          'No email exists with address \"%s\"!',\n          $address));\n    }\n\n    $viewer = $this->getViewer();\n\n    $user = id(new PhabricatorPeopleQuery())\n      ->setViewer($viewer)\n      ->withPHIDs(array($email->getUserPHID()))\n      ->executeOne();\n    if (!$user) {\n      throw new Exception(pht('Email record has invalid user PHID!'));\n    }\n\n    $editor = id(new PhabricatorUserEditor())\n      ->setActor($viewer)\n      ->verifyEmail($user, $email);","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/auth/management/PhabricatorAuthManagementVerifyWorkflow.php#L21-L57","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\n$ bin/auth verify Alice@Example.com\nNo email exists with address \"Alice@Example.com\"!\n\n// after\n$ bin/auth verify alice@example.com","handlingStrategy":"validation","validationCode":"$email = id(new PhabricatorUserEmail())->loadOneWhere(\n  'address = %s',\n  $address);\nif (!$email) {\n  // the address is not on file: have the user add it in Settings first\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["phabricator","cli","email","usage-exception","record-not-found"],"backgroundTag":"entity-not-found","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}