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

  1. Go to Applications (admin) in the web UI, find the application named in the error, and install/enable it, then retry the call.
  2. If the application must stay uninstalled, stop calling its methods and migrate the workflow to another application's API or remove the integration.
  3. 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

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


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/4451a90db2a6849f. Report an issue: GitHub.