> ## Documentation Index
> Fetch the complete documentation index at: https://manifest.build/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# M102: Provider subscription credentials unusable

> Manifest error M102 fires when routing picks a subscription provider whose OAuth or refresh credentials cannot be used. Fix: reconnect the subscription on Routing.

## What you saw

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
[🦚 Manifest M102] openai subscription credentials could not be refreshed. Reconnect OAuth here: https://app.manifest.build/...
See https://manifest.build/docs/errors/M102
```

The provider name (`openai` in the example) varies based on which subscription route Manifest selected.

## Why it happened

Routing elected a **subscription** connection (ChatGPT OAuth, Claude Max token, Copilot device code, and similar), and Manifest still has a stored credential blob for it — but that credential cannot produce a usable access token.

Typical causes:

* The OAuth **refresh token expired**, was revoked, or the user signed out of the provider account
* A pasted subscription token is no longer valid
* Provider-side session invalidation after a password change or security reset

This is different from [M100](/docs/errors/M100): M100 means there is no key on file. M102 means a subscription row exists and was elected, but the unwrap/refresh step failed.

When fallback routes are configured, Manifest records the M102 hop and continues the chain. You only see a terminal M102 response when no usable fallback remains.

## How to fix it

1. Open the dashboard link in the error message. It goes straight to the agent's **Routing** page.
2. On the provider tile, open the **Subscription** tab and reconnect (re-run OAuth, device code, or paste a fresh token).
3. Optionally add a working [API key](/docs/providers/api-key-providers) or another [subscription](/docs/providers/subscription-based-providers) as a fallback so a dead primary does not block traffic.
4. Retry the request.

## Related

* [M100: Provider API key missing](/docs/errors/M100)
* [M101: No providers configured](/docs/errors/M101)
* [Subscription-based providers](/docs/providers/subscription-based-providers)
* [API key providers](/docs/providers/api-key-providers)
* [Routing](/docs/llm-gateway)
* [All error codes](/docs/errors)
