multica-ai/multica · error
composio: callback missing connected_account_id
Error message
composio: callback missing connected_account_id
What it means
Error "composio: callback missing connected_account_id" thrown in multica-ai/multica.
Source
Thrown at server/internal/integrations/composio/service.go:299
// CompleteCallback verifies the signed state and, on a successful Composio
// status, upserts the local connection row. It returns the toolkit slug from
// the state so the handler can build the right redirect even on the
// not-successful path.
//
// Idempotency: the upsert is keyed on (user_id, connected_account_id), so a
// duplicate callback re-activates the same row instead of creating a second.
func (s *Service) CompleteCallback(ctx context.Context, state, status, connectedAccountID string) (string, error) {
claims, err := verifyState(s.secret, state, s.now())
if err != nil {
return "", err
}
if !strings.EqualFold(strings.TrimSpace(status), "success") {
// Honor the state for the redirect slug, but do not write an active row.
return claims.ToolkitSlug, ErrConnectNotSuccessful
}
if strings.TrimSpace(connectedAccountID) == "" {
return claims.ToolkitSlug, errors.New("composio: callback missing connected_account_id")
}
userID, err := util.ParseUUID(claims.UserID)
if err != nil {
return claims.ToolkitSlug, fmt.Errorf("composio: state has invalid user id: %w", err)
}
// The auth_config_id was resolved at BeginConnect and signed into the state,
// so we compare against THAT exact value rather than re-resolving here (a
// re-resolve that failed or drifted would otherwise fail-open: a missing
// expected auth config used to skip the check, letting another toolkit's
// account id be bound under this toolkit's slug). An empty value fails
// closed in verifyAccountOwnership.
authConfigID := claims.AuthConfigID
// Defense-in-depth (PR 4608 review): the signed state proves *who* started
// the handshake and *which* toolkit, but connected_account_id rides back as
// a plain query param Composio appends to our callback URL. A craftedView on GitHub (pinned to 2c0912b6ec)
Solutions
- Restart the Composio OAuth flow; the callback was missing the connected_account_id parameter.
When it happens
Trigger: Thrown at server/internal/integrations/composio/service.go:299 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/fc60a6241ef357d7.
Report an issue: GitHub.