phacility/phabricator · error · ConduitApplicationNotInstalledException
Method '%s' belongs to application '%s', which is not instal
Error message
Method '%s' belongs to application '%s', which is not installed.
What it means
Thrown by ConduitCall::buildMethodHandler() when the method class exists but $method->getApplication() returns an application whose isInstalled() is false. Phabricator deliberately hides Conduit methods of uninstalled applications, so the call is rejected before execution. The message names both the method and the owning application.
Source
Thrown at src/applications/conduit/call/ConduitCall.php:144
'API method.'));
}
}
}
return $this->handler->executeMethod($this->request);
}
protected function buildMethodHandler($method_name) {
$method = ConduitAPIMethod::getConduitMethod($method_name);
if (!$method) {
throw new ConduitMethodDoesNotExistException($method_name);
}
$application = $method->getApplication();
if ($application && !$application->isInstalled()) {
$app_name = $application->getName();
throw new ConduitApplicationNotInstalledException($method, $app_name);
}
return $method;
}
public function getMethodImplementation() {
return $this->handler;
}
}
View on GitHub (pinned to 5720a38cfe)
Solutions
- Go to Applications (admin) in the web UI, find the application named in the error, and install/enable it, then retry the call.
- If the application must stay uninstalled, stop calling its methods and migrate the workflow to another application's API or remove the integration.
- Verify after enabling that the method now appears in the /conduit/ method list for that install.
Example fix
# before (Maniphest uninstalled, call fails) $ arc call-conduit maniphest.task.query # after: install Maniphest via Admin -> Applications, then $ arc call-conduit maniphest.task.query
Defensive patterns
Strategy: validation
Validate before calling
// Before calling, confirm the method's application is installed.
$method = ConduitAPIMethod::getConduitMethod($method_name);
if ($method) {
$app = $method->getApplication();
if ($app && !$app->isInstalled()) {
// Abort early with a clear message instead of calling.
}
} Try / catch
try {
$result = id(new ConduitCall($method, $params))
->setUser($viewer)
->execute();
} catch (ConduitApplicationNotInstalledException $ex) {
// Tell the operator to install the application, or degrade gracefully.
} Prevention
- Document which Conduit methods your integration needs and which applications must be installed.
- Run a startup probe on new installs that calls one method per required application and fails fast.
- Monitor admin application changes, since uninstalling an app silently breaks dependent Conduit calls.
When it happens
Trigger: Calling maniphest.* methods after an admin uninstalled Maniphest in /applications/; hitting phriction.* or differential.* endpoints on an install where that app was disabled; fresh installs where the needed application ships uninstalled.
Common situations: An administrator disables an application to declutter the UI and unknowingly breaks CI scripts that call its Conduit methods; integrations written against a default install fail on hardened installs where optional apps were removed.
Related errors
- Service "%s" is unrecognized, restricted, or you do not have
- Conduit API method "%s" does not exist.
- Specify a method to call with "--method".
- Specify a file to read parameters from with "--input".
- No such user "%s" exists.
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/4451a90db2a6849f.
Report an issue: GitHub.