phacility/phabricator · warning · Exception
You have not chosen any edits to apply.
Error message
You have not chosen any edits to apply.
What it means
The bulk edit request must carry an 'xactions' POST field containing a JSON array of raw edit transactions. When the field is absent or decodes to an empty array, no edits were chosen and the engine aborts before constructing the edit engine transactions.
Source
Thrown at src/applications/transactions/bulk/PhabricatorBulkEngine.php:416
// Restrict the selection set to objects the user can actually edit.
$objects = array_intersect_key($this->editableList, $this->targetList);
if (!$objects) {
throw new Exception(
pht(
'You have not selected any objects to edit.'));
}
$raw_xactions = $request->getStr('xactions');
if ($raw_xactions) {
$raw_xactions = phutil_json_decode($raw_xactions);
} else {
$raw_xactions = array();
}
if (!$raw_xactions) {
throw new Exception(
pht(
'You have not chosen any edits to apply.'));
}
$edit_engine = id($this->newEditEngine())
->setViewer($viewer);
$xactions = $edit_engine->newRawBulkTransactions($raw_xactions);
$cancel_uri = $this->getCancelURI();
$done_uri = $this->getDoneURI();
$job = PhabricatorWorkerBulkJob::initializeNewJob(
$viewer,
new PhabricatorEditEngineBulkJobType(),
array(
'objectPHIDs' => mpull($objects, 'getPHID'),
'xactions' => $xactions,View on GitHub (pinned to 5720a38cfe)
Solutions
- Define at least one edit (a field plus an operation) in the dialog before submitting
- If scripting, ensure the xactions value is a non-empty JSON array of valid transaction descriptions
- Log the outgoing payload to confirm the client actually serialized the edits
Example fix
// before: submitting with no edits
$_POST['xactions'] = '[]';
// after: at least one concrete edit
$_POST['xactions'] = phutil_json_encode(array(
array(
'type' => 'title.set',
'value' => 'Bulk-edited title',
),
)); Defensive patterns
Strategy: validation
Validate before calling
// Client-side: build and check the payload before submitting.
$xactions = array(/* user-defined edits */);
if (!$xactions) {
// block submit: no edits chosen
}
$request->setStr('xactions', phutil_json_encode($xactions)); Prevention
- Require at least one edit rule before enabling the submit control
- Log the outgoing xactions JSON when automating bulk edits
When it happens
Trigger: Submitting the bulk edit dialog without defining any edits; a client sending an empty JSON array; automated posts omitting the field entirely.
Common situations: Users clicking through the workflow without adding an edit rule; scripts posting an empty xactions payload.
Related errors
- This is not a valid JSON document and can not be rendered as
- Keyring configuration is not valid: value must be a list of
- Keyring configuration is not valid: each entry in the list m
- Keyring configuration has an invalid key specification (at i
- The regular expression pair "%s" is not valid JSON. Enter a
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/7d15a9e332555aeb.
Report an issue: GitHub.