{"record":{"id":"400721a67e966782","repo":"phacility/phabricator","slug":"unrecognized-verb-s","errorCode":null,"errorMessage":"Unrecognized verb: %s","messagePattern":"Unrecognized verb: (.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/config/controller/issue/PhabricatorConfigIgnoreController.php","lineNumber":32,"sourceCode":"      $this->manageApplication($issue);\n      return id(new AphrontRedirectResponse())->setURI($issue_uri);\n    }\n\n    if ($verb == 'ignore') {\n      $title = pht('Really ignore this setup issue?');\n      $submit_title = pht('Ignore');\n      $body = pht(\n        \"You can ignore an issue if you don't want to fix it, or plan to \".\n        \"fix it later. Ignored issues won't appear on every page but will \".\n        \"still be shown in the list of open issues.\");\n    } else if ($verb == 'unignore') {\n      $title = pht('Unignore this setup issue?');\n      $submit_title = pht('Unignore');\n      $body = pht(\n        'This issue will no longer be suppressed, and will return to its '.\n        'rightful place as a global setup warning.');\n    } else {\n      throw new Exception(pht('Unrecognized verb: %s', $verb));\n    }\n\n    return $this->newDialog()\n      ->setTitle($title)\n      ->appendChild($body)\n      ->addSubmitButton($submit_title)\n      ->addCancelButton($issue_uri);\n\n  }\n\n  public function manageApplication($issue) {\n    $key = 'config.ignore-issues';\n    $config_entry = PhabricatorConfigEntry::loadConfigEntry($key);\n    $list = $config_entry->getValue();\n\n    if (isset($list[$issue])) {\n      unset($list[$issue]);\n    } else {","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/config/controller/issue/PhabricatorConfigIgnoreController.php#L14-L50","documentation":"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.","triggerScenarios":"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.","commonSituations":"Almost exclusively reached by manual URL editing or buggy custom navigation, since the UI only generates 'ignore'/'unignore' links from the setup-issue page.","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."],"exampleFix":"# before\n/config/issue/db_LEGACY_UTF84/ignored/\n# after\n/config/issue/db_LEGACY_UTF84/ignore/","handlingStrategy":"validation","validationCode":"// When generating links to setup-issue management, whitelist the verb.\n$verb = idx($request->getURIData('verb'));\nif (!in_array($verb, array('ignore', 'unignore'), true)) {\n  return new Aphront400Response();\n}\n$uri = '/config/issue/'.$issue_key.'/'.$verb.'/';","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["config","controller","phabricator","php","admin"],"backgroundTag":"invalid-request-parameter","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}