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
- Correct or remove the nonexistent references named in the message
- Verify each reference exists and is visible to the current editor before re-submitting
- 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
- Resolve each username/monogram before adding it to a field
- Remember policy visibility: refs invisible to the editor count as missing
- For tolerant imports use setAllowPartialResults(true) and log dropped refs
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
- The objects you have listed include objects of the wrong typ
- The objects you have listed include objects of the wrong typ
- ERR_NOT_FOUND
- ERR_BAD_REVISION
- Unsupported action "%s".
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/7ff147ea835b6a46.
Report an issue: GitHub.