## TL;DR
Renew the app certificate before expiry, fix the subscription renewal job to use the new certificate, and recreate the Graph subscription for reported phish, then backfill reports from the mailbox for the gap period, because a subscription expiring every three days with a broken renewal is a standing blind spot. Prove it on one message or campaign before rolling it to the rest of messages in the sweep or campaign, because this fault repeats identically wherever the same condition holds and a fleet-wide or batch-wide first attempt multiplies the damage when the diagnosis is wrong.

```text
agent graph subscription for reported phish expired every three days and the renewal job failed after the app certificate expired
```

## Use this when
- You see this exact error or symptom: agent graph subscription for reported phish expired every three days and the renewal job failed after the app certificate expired.
- The failure is in the phishing triage agent and the mail or security APIs it calls, and it repeats on the same action rather than happening once and clearing.
- Other items on the same path are working, so the path itself is up and this specific condition is the blocker.

## Not for this skill when
- A different error code, message, or tool is involved. Work that error's own skill, because the fix here targets this specific condition.
- The whole service or platform is down. Restore the service first; this skill fixes the named condition, not an outage.
- You cannot identify one affected item to test on. Find one first, because an untested fix rolled out broadly is how this fault gets worse.

## Steps
1. Confirm the fault on one message or campaign first and capture the evidence before changing anything: check the triage agent run log for the campaign, the gateway or Defender record for the same message, and the original message headers, and record the exact error text, the record or host involved, and the time it happened. Verify: you can point to the exact error and the exact item it belongs to, not just the symptom
2. Renew the app certificate before expiry, fix the subscription renewal job to use the new certificate, and recreate the Graph subscription for reported phish, then backfill reports from the mailbox for the gap period, because a subscription expiring every three days with a broken renewal is a standing blind spot. Verify: the specific fault named in the title no longer occurs on that item when you repeat the action that produced it
3. Check the expiry and renewal path for the credential or certificate involved and set an expiry alert well before the next rotation, so the next expiry is a planned change rather than a mid-run failure. Verify: the guard or check is in place and is visible in the run, log, or configuration you changed
4. Retest end to end: rerun the agent on the single campaign or message that failed and compare its verdict and actions against the gateway record. Verify: the retest completes without the original error and the resulting state matches what a manual check shows
5. Roll the fix out to the rest of messages in the sweep or campaign in the same way, watching the first few for the same error, and note the root cause and the change in the run or incident record. Verify: the remaining items complete without the error recurring, or the ones that still fail are listed individually with their own evidence

## Variant phrasings
### agent graph subscription for reported phish expired every fix
The verbatim error or code phrasing for this fault in the phishing triage agent; the fix is the same one in the steps above.
### agent graph subscription for reported phish expired every three days
The full symptom phrasing as it appears in the console, log, or report where this failure surfaces.
### how to fix agent graph subscription for reported phish expired every
The how-to phrasing for the same fault; start with the TL;DR fix, then work the steps in order.

Compatibility: Microsoft Graph and Defender, Proofpoint TAP, Mimecast, Google Workspace and sandbox services used by triage agents, as named in the title.

## Why it happens
This fault happens because credentials and certificates in automated paths expire on their own schedule, not the workflow's, and nothing in the run notices until a call fails. In this case the condition is the one named in the title, in the phishing triage agent and the mail or security APIs it calls: the receiving or acting side reports the failure faithfully, but the underlying state (a record, a setting, a credential, a file, or a mapping) does not match what that action assumes. Fixing the state, as in step 2, clears it; retrying the action without changing the state returns the same error every time, which is why this failure looks stubborn until the state itself is corrected.

## Provenance

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