phacility/phabricator · error · PhabricatorWorkerPermanentFailureException
No Asana provider configured.
Error message
No Asana provider configured.
What it means
DoorkeeperAsanaFeedWorker::getProvider() lazily resolves the configured Asana auth provider via PhabricatorAsanaAuthProvider::getAsanaProvider(). If no enabled Asana provider exists (typically because asana.application-id / application-private-key are unset or the provider is not configured in the Auth application), it throws PhabricatorWorkerPermanentFailureException and the story task is dropped without retry.
Source
Thrown at src/applications/doorkeeper/worker/DoorkeeperAsanaFeedWorker.php:460
'POST',
array(
'text' => $text,
));
}
}
/* -( Internals )---------------------------------------------------------- */
private function getWorkspaceID() {
return PhabricatorEnv::getEnvConfig('asana.workspace-id');
}
private function getProvider() {
if (!$this->provider) {
$provider = PhabricatorAsanaAuthProvider::getAsanaProvider();
if (!$provider) {
throw new PhabricatorWorkerPermanentFailureException(
pht('No Asana provider configured.'));
}
$this->provider = $provider;
}
return $this->provider;
}
private function getAsanaTaskData($object) {
$publisher = $this->getPublisher();
$title = $publisher->getObjectTitle($object);
$uri = $publisher->getObjectURI($object);
$description = $publisher->getObjectDescription($object);
$is_completed = $publisher->isObjectClosed($object);
$notes = array(
$description,
$uri,View on GitHub (pinned to 5720a38cfe)
Solutions
- Configure the Asana auth provider: Auth application -> Add Provider -> Asana, with application ID and secret from Asana
- Ensure asana.application-id and application-private-key config are set to match the Asana developer app
- If Asana integration is not wanted, disable the Doorkeeper Asana feed worker / unsubscribe so stories stop failing
Defensive patterns
Strategy: validation
Validate before calling
if (!PhabricatorAsanaAuthProvider::getAsanaProvider()) {
// Do not enqueue Asana feed work until a provider is configured.
return;
} Prevention
- Configure the Asana auth provider in the Auth application before enabling the bridge
- Set asana.workspace-id only after the provider works, to avoid half-configured states
- Disable the Asana feed worker when the integration is decommissioned
When it happens
Trigger: The Asana feed worker is active (subscribed/enabled) while the Phabricator instance has no Asana auth provider configured — `PhabricatorAsanaAuthProvider::getAsanaProvider()` returns null. Also fires if the provider was disabled after Asana edges/workers already exist.
Common situations: Enabling or leaving on the Asana integration in one config layer while the auth provider was never set up in the Auth application; disabling the provider during migration; fresh installs that import a config with asana.workspace-id set but no provider.
Related errors
- No JIRA provider configured.
- Unable to find any Asana user with valid credentials to pull
- No related users have linked Asana accounts.
- Synchronization of parent task from Asana failed!
- %s has no visible object on the other side; this likely indi
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/917d8d44e6e65016.
Report an issue: GitHub.