## TL;DR
Plaid items drop into a login-required state when credentials, MFA, or consent expire, and sync calls then fail until the link is repaired through the update mode flow, which needs the account holder. The agent's job is to detect the state, preserve its last good cursor, prompt for the link repair with the specific item named, and after repair resume sync from that cursor. Blind retries against a login-required item never succeed and can extend lockouts at the bank.

```text
agent failed to resume the Plaid pull after the bank link session expired mid-sync
```

## Use this when
- Sync fails with login-required or item error states from Plaid during a pull.
- The item worked previously and the failure began at a specific sync, often after a bank password or MFA change.
- Transactions after the failure point are missing while earlier data is intact.

## Not for this skill when
- The item was disconnected or the account closed. There is nothing to resume; the link must be created fresh or the account removed.
- Sync succeeds but data is wrong. That is a data quality issue, not a link state issue.

## Steps
1. Read the item's current state and error code from Plaid and record the last successful sync cursor and timestamp. Verify: the item state and the resume point are both known
2. Stop retrying the sync and put the job into a waiting-for-relink state that names the institution and account. Verify: no further sync attempts hit the expired item
3. Have the account holder complete the link update flow for that item. Verify: the item state returns to good in Plaid's status
4. Resume sync from the saved cursor and monitor the first successful response. Verify: new transactions arrive starting after the last good timestamp
5. Reconcile the gap window between the last good sync and the repair date against the statement. Verify: no transactions from the expired window are missing or doubled

## Variant phrasings
### Plaid link expired mid sync resume item login required
The link-expiry phrasing.
### agent Plaid pull failed session expired relink
When repairing the item link.

Compatibility: Plaid Link update mode, item states, and cursor sync used by agent accounting integrations.

## Why it happens
Bank links are living connections that decay: passwords change, banks force MFA refreshes, consent windows lapse. Plaid surfaces the decay as item states, and sync is refused until a human re-authenticates, by design, because only the account holder may. Agents built without a state-handling path treat a policy refusal as a transient error and retry it, which is why the human step and the preserved cursor are the core of the fix.

## Edge cases / pitfalls
- Institutions differ in how often they force re-authentication; a bank that requires it monthly needs a calendar expectation, not monthly surprise.
- While an item is in a login-required state, its historical data already pulled remains valid. Do not discard local data during relink.
- Multiple items at one institution can expire together after a bank-side change; check sibling items when one fails.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_GnnidbEpdvk8BlykRnNvbg
