{"record":{"id":"f44d3aa518647186","repo":"tinyhumansai/openhuman","slug":"no-auth-config-found-for-toolkit-app-name-cre","errorCode":null,"errorMessage":"No auth config found for toolkit '{app_name}'. Create one in Composio first.","messagePattern":"No auth config found for toolkit '(.+?)'\\. Create one in Composio first\\.","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/integrations/composio/tools/direct.rs","lineNumber":689,"sourceCode":"                (\"toolkit_slug\", app_name),\n                (\"show_disabled\", \"true\"),\n                (\"limit\", \"25\"),\n            ])\n            .send()\n            .await?;\n\n        if !resp.status().is_success() {\n            let err = response_error(resp).await;\n            anyhow::bail!(\"Composio v3 auth config lookup failed: {err}\");\n        }\n\n        let body: ComposioAuthConfigsResponse = resp\n            .json()\n            .await\n            .context(\"Failed to decode Composio v3 auth configs response\")?;\n\n        if body.items.is_empty() {\n            anyhow::bail!(\n                \"No auth config found for toolkit '{app_name}'. Create one in Composio first.\"\n            );\n        }\n\n        let preferred = body\n            .items\n            .iter()\n            .find(|cfg| cfg.is_enabled())\n            .or_else(|| body.items.first())\n            .context(\"No usable auth config returned by Composio\")?;\n\n        Ok(preferred.id.clone())\n    }\n}\n\n#[async_trait]\nimpl Tool for ComposioTool {\n    fn name(&self) -> &str {","sourceCodeStart":671,"sourceCodeEnd":707,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/integrations/composio/tools/direct.rs#L671-L707","documentation":"The v3 auth-config lookup succeeded (HTTP 200) but returned zero items for the toolkit: this workspace has no auth config for that app, so there is nothing to connect through. The code prefers an enabled config and falls back to the first item — but items is empty, so it bails with instructions to create one in Composio first.","triggerScenarios":"get_connection_url(Some(\"<toolkit>\"), None, entity) where the Composio workspace backing the API key has no auth config for that toolkit (show_disabled=true means disabled ones would still be listed — empty means genuinely none exist).","commonSituations":"First-time setup of a new toolkit where the Composio workspace admin has not created the auth config; API key pointing at a different workspace/org than the one configured; toolkit renamed upstream so the slug matches nothing.","solutions":["Create an auth config for the toolkit in the Composio dashboard (workspace settings → Auth / API keys), then retry connect","Verify the API key belongs to the same workspace where the auth config was created","Double-check the toolkit slug against Composio's current registry — a renamed toolkit yields the same empty result","Alternatively, look up the auth config id in the dashboard and pass auth_config_id directly, skipping the lookup"],"exampleFix":"// before — app-only connect triggers the lookup that finds nothing\ntool.get_connection_url(Some(\"jira\"), None, &entity_id).await?;\n\n// after — pass the auth config id from the Composio dashboard explicitly\ntool.get_connection_url(None, Some(\"ac_01j8z...\"), &entity_id).await?;","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"match tool.get_connection_url(Some(slug), None, &entity).await {\n    Ok(url) => ui.open(url),\n    Err(e) => {\n        let msg = format!(\"{e:#}\");\n        if msg.contains(\"No auth config found\") {\n            ui.explain(\"Create an auth config for '{slug}' in the Composio dashboard, then retry\");\n        } else { ui.show_connect_error(&msg); }\n    }\n}","preventionTips":["During setup, check the workspace has an auth config per toolkit before exposing its connect button","Pass auth_config_id directly when you know it — it skips the empty-lookup failure mode","Confirm the API key's workspace matches where auth configs are created"],"tags":["composio","auth-config","not-found","connect","setup"],"backgroundTag":"remote-resource-not-found","analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}