phacility/phabricator · error · DifferentialFieldParseException

The objects you have listed include objects which do not exi

Error message

The objects you have listed include objects which do not exist (%s).

What it means

Variant of the PhabricatorObjectListQuery failure where all references are the right type but at least one resolved to nothing ($missing non-empty, $invalid empty) - a nonexistent object, a deleted object, or one invisible to the acting user. With partial results disallowed, the query throws DifferentialFieldParseException listing the unresolvable references.

Source

Thrown at src/applications/phid/query/PhabricatorObjectListQuery.php:191

    // extra API to loosen this. It's not clear that this will be useful
    // elsewhere any time soon, so let's cross that bridge when we come to it.

    if (!$this->getAllowPartialResults()) {
      if ($invalid && $missing) {
        throw new DifferentialFieldParseException(
          pht(
            'The objects you have listed include objects of the wrong '.
            'type (%s) and objects which do not exist (%s).',
            implode(', ', $invalid),
            implode(', ', $missing)));
      } else if ($invalid) {
        throw new DifferentialFieldParseException(
          pht(
            'The objects you have listed include objects of the wrong '.
            'type (%s).',
            implode(', ', $invalid)));
      } else if ($missing) {
        throw new DifferentialFieldParseException(
          pht(
            'The objects you have listed include objects which do not '.
            'exist (%s).',
            implode(', ', $missing)));
      }
    }

    if ($suffixes) {
      foreach ($result as $key => $phid) {
        $result[$key] = array(
          'phid' => $phid,
          'suffixes' => idx($suffix_map, $key, array()),
        );
      }
    }

    return array_values($result);
  }

View on GitHub (pinned to 5720a38cfe)

Solutions

  1. Correct or remove the nonexistent references named in the message
  2. Verify each reference exists and is visible to the current editor before re-submitting
  3. For tolerant programmatic imports, build the query with setAllowPartialResults(true) and log what dropped out

Example fix

// before
Subscribers: alice, gone-user
// after
Subscribers: alice  // remove users that no longer exist
Defensive patterns

Strategy: validation

Validate before calling

// Confirm every reference resolves before submitting the field
foreach (explode(',', $raw_value) as $ref) {
  $ref = trim($ref);
  $object = id(new PhabricatorObjectQuery())
    ->setViewer($viewer)
    ->withNames(array($ref))
    ->executeOne();
  if (!$object) {
    // nonexistent or policy-hidden: drop it and warn the user
  }
}

Try / catch

try {
  $phids = id(new PhabricatorObjectListQuery())
    ->setObjectList($list)
    ->setAllowedTypes($allowed)
    ->execute();
} catch (DifferentialFieldParseException $ex) {
  // missing refs are listed in the message; show them per-field
}

Prevention

When it happens

Trigger: Reviewers field with a typo'd or deleted username; referencing a project monogram that was renamed/disabled; subscribers list containing users invisible to the editor due to policy; API clients sending PHIDs for objects deleted since export.

Common situations: Deleted or renamed accounts left in templates; policy-protected objects the viewer cannot see; stale data replayed by migration tooling.

Related errors


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