phacility/phabricator · error · Exception
This rule was created with a newer version of Herald. You ca
Error message
This rule was created with a newer version of Herald. You can not view or edit it in this older version. Upgrade your software.
What it means
Thrown by HeraldRuleController when a rule's stored config version (HeraldRule::getConfigVersion()) is greater than the version this install knows (the default on a fresh HeraldRule). Herald bumps the rule config version when the storage format for conditions/actions changes; a rule written by a NEWER Phabricator cannot be safely interpreted by an OLDER one, so viewing or editing is blocked outright.
Source
Thrown at src/applications/herald/controller/HeraldRuleController.php:108
if (!$adapter->canTriggerOnObject($object)) {
throw new Exception(
pht('Object is of wrong type for adapter!'));
}
}
$cancel_uri = $this->getApplicationURI();
}
if ($rule->isGlobalRule()) {
$this->requireApplicationCapability(
HeraldManageGlobalRulesCapability::CAPABILITY);
}
$adapter = HeraldAdapter::getAdapterForContentType($rule->getContentType());
$local_version = id(new HeraldRule())->getConfigVersion();
if ($rule->getConfigVersion() > $local_version) {
throw new Exception(
pht(
'This rule was created with a newer version of Herald. You can not '.
'view or edit it in this older version. Upgrade your software.'));
}
// Upgrade rule version to our version, since we might add newly-defined
// conditions, etc.
$rule->setConfigVersion($local_version);
$rule_conditions = $rule->loadConditions();
$rule_actions = $rule->loadActions();
$rule->attachConditions($rule_conditions);
$rule->attachActions($rule_actions);
$e_name = true;
$errors = array();
if ($request->isFormPost() && $request->getStr('save')) {View on GitHub (pinned to 5720a38cfe)
Solutions
- Upgrade Phabricator (and phutil/libphutil) to a version at least as new as the one that wrote the rule, then reload.
- If you restored a dump from a newer version, upgrade that environment rather than hand-editing config_version.
- Ensure ALL web/daemon hosts point at code of the same version when sharing a database (mixed-version frontends cause intermittent occurrences).
- As a last resort on a scratch copy, set the rule's config_version back to the local default — but only on data you are willing to corrupt, since conditions/actions may decode incorrectly.
Example fix
// before — mixed-version cluster web-1: phabricator 2021.x (newer, wrote rule, config_version = 27) web-2: phabricator 2020.x (older, local version = 26) -> throws // after # upgrade every host to the same (newest) release git -C phabricator pull origin stable && git -C arcanist pull origin stable # on all web/daemon hosts, then reload the rule
Defensive patterns
Strategy: validation
Validate before calling
// Gate rules by config version before opening them for edit/view
$local_version = id(new HeraldRule())->getConfigVersion();
if ($rule->getConfigVersion() > $local_version) {
// show 'upgrade required' notice; do NOT proceed to loadConditions()
} Type guard
function ruleIsViewableInThisInstall(HeraldRule $rule) {
return $rule->getConfigVersion() <= id(new HeraldRule())->getConfigVersion();
} Try / catch
try {
// handling a rule view/edit request
} catch (Exception $ex) {
if (strpos($ex->getMessage(), 'newer version of Herald') !== false) {
// render an upgrade-required page instead of a stack trace
}
} Prevention
- Run all web fronts and daemons against the same Phabricator checkout sharing a database.
- After restoring a dump from a newer version, upgrade code first, then browse.
- Monitor rule config_version max vs local default after every upgrade/downgrade.
When it happens
Trigger: Opening /herald/view/ or /herald/edit/ for a rule whose config_version column is higher than the current install's HeraldRule default. Happens after downgrading Phabricator, restoring a database dump from a newer version onto older code, running a replica pair with mixed versions, or after restoring backups across version boundaries.
Common situations: Downgrade or partial upgrade: web frontends on different Phabricator versions sharing one database. Restoring a production DB dump into an older development environment. This is a guard against data corruption, not a rule-content bug — the fix is at the install level, not the rule level.
Related errors
- Unknown condition "%s"!
- The regular expression "%s" is not valid. Regular expression
- The regular expression pair "%s" is not valid JSON. Enter a
- The regular expression pair "%s" must have exactly two eleme
- The first regexp in the regexp pair, "%s", is not a valid re
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/3ece21b5e918ab33.
Report an issue: GitHub.