phacility/phabricator · error · Exception
Unrecognized verb: %s
Error message
Unrecognized verb: %s
What it means
PhabricatorConfigIgnoreController renders the confirmation dialog for setup-issue actions and accepts only the verbs 'ignore' and 'unignore' decoded from the request. Any other verb value falls through to a hard Exception ('Unrecognized verb: %s'), producing an error page instead of a dialog.
Source
Thrown at src/applications/config/controller/issue/PhabricatorConfigIgnoreController.php:32
$this->manageApplication($issue);
return id(new AphrontRedirectResponse())->setURI($issue_uri);
}
if ($verb == 'ignore') {
$title = pht('Really ignore this setup issue?');
$submit_title = pht('Ignore');
$body = pht(
"You can ignore an issue if you don't want to fix it, or plan to ".
"fix it later. Ignored issues won't appear on every page but will ".
"still be shown in the list of open issues.");
} else if ($verb == 'unignore') {
$title = pht('Unignore this setup issue?');
$submit_title = pht('Unignore');
$body = pht(
'This issue will no longer be suppressed, and will return to its '.
'rightful place as a global setup warning.');
} else {
throw new Exception(pht('Unrecognized verb: %s', $verb));
}
return $this->newDialog()
->setTitle($title)
->appendChild($body)
->addSubmitButton($submit_title)
->addCancelButton($issue_uri);
}
public function manageApplication($issue) {
$key = 'config.ignore-issues';
$config_entry = PhabricatorConfigEntry::loadConfigEntry($key);
$list = $config_entry->getValue();
if (isset($list[$issue])) {
unset($list[$issue]);
} else {View on GitHub (pinned to 5720a38cfe)
Solutions
- Use only 'ignore' or 'unignore' as the verb segment: /config/issue/<issue-key>/ignore/.
- Reach the dialog from the setup issue's own page (/config/issue/) so links are generated correctly.
- If a custom integration links here, generate the URL from a whitelist of the two known verbs.
Example fix
# before /config/issue/db_LEGACY_UTF84/ignored/ # after /config/issue/db_LEGACY_UTF84/ignore/
Defensive patterns
Strategy: validation
Validate before calling
// When generating links to setup-issue management, whitelist the verb.
$verb = idx($request->getURIData('verb'));
if (!in_array($verb, array('ignore', 'unignore'), true)) {
return new Aphront400Response();
}
$uri = '/config/issue/'.$issue_key.'/'.$verb.'/'; Prevention
- Always navigate from the /config/issue/ page rather than editing URLs by hand.
- In custom extensions, construct the verb from a fixed set of the two known values.
When it happens
Trigger: Hand-editing the URL /config/issue/<issue-key>/<verb>/ with a typo or arbitrary word; custom dashboard links or extensions constructing this URL with a wrong verb; stale bookmarks after a verb rename.
Common situations: Almost exclusively reached by manual URL editing or buggy custom navigation, since the UI only generates 'ignore'/'unignore' links from the setup-issue page.
Related errors
- The following regex is malformed and cannot be used: %s
- No file storage format with key "%s" exists.
- Database "%s" is configured as a replica, but specifies a "p
- Database "%s" is configured as a replica, but does not speci
- Database "%s" is configured as a replica, but there is no ma
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/400721a67e966782.
Report an issue: GitHub.