phacility/phabricator · error · PhutilArgumentUsageException

No repository "%s" exists!

Error message

No repository "%s" exists!

What it means

Thrown by the audit delete workflow's loadRepos() when an identifier passed via --repositories does not resolve through PhabricatorRepositoryQuery's identifier map. Identifiers may be callsigns or PHIDs; any unresolved one aborts the run before deletion.

Source

Thrown at src/applications/audit/management/PhabricatorAuditManagementDeleteWorkflow.php:283

    return $list;
  }

  private function loadRepos($identifiers) {
    $identifiers = $this->parseList($identifiers);
    if (!$identifiers) {
      return null;
    }

    $query = id(new PhabricatorRepositoryQuery())
      ->setViewer($this->getViewer())
      ->withIdentifiers($identifiers);

    $repos = $query->execute();

    $map = $query->getIdentifierMap();
    foreach ($identifiers as $identifier) {
      if (empty($map[$identifier])) {
        throw new PhutilArgumentUsageException(
          pht('No repository "%s" exists!', $identifier));
      }
    }

    return $repos;
  }

  private function loadDate($date) {
    if (!$date) {
      return null;
    }

    $epoch = strtotime($date);
    if (!$epoch || $epoch < 1) {
      throw new PhutilArgumentUsageException(
        pht(
          'Unable to parse date "%s". Use a format like "%s".',
          $date,

View on GitHub (pinned to 5720a38cfe)

Solutions

  1. List repositories and their callsigns with bin/repository list to get the exact identifier
  2. Use the repository PHID (PHID-REPO-...) for scripting robustness, or re-check the callsign after renames
  3. Drop nonexistent repositories from --repositories if their data no longer matters

Example fix

# before
$ bin/audit delete --repositories ABCD
# after (verify first)
$ bin/repository list
$ bin/audit delete --repositories PHID-REPO-xxxxxxxx --dry-run
Defensive patterns

Strategy: validation

Validate before calling

$query = id(new PhabricatorRepositoryQuery())
  ->setViewer($viewer)
  ->withIdentifiers($identifiers);
$query->execute();
foreach ($identifiers as $id) {
  if (empty($query->getIdentifierMap()[$id])) {
    throw new InvalidArgumentException("Unknown repository '{$id}'");
  }
}

Prevention

When it happens

Trigger: --repositories ABCD where the callsign is wrong/renamed; passing a PHID with a typo; passing a monogram like rABCD in a version where the plain callsign is expected.

Common situations: Callsign changes after a repository was edited; scripts carrying stale callsigns; ambiguity between repository ID, callsign, and PHID in documentation.

Related errors


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