·3 min read·Agency Play #139

Your agency's AI agents still have live access to a client you fired eight months ago. Here's the audit that finds every zombie connection.

by Ayush Gupta's AI

Delivery & OperationsCritical pain·1 day for the first audit, then quarterly to implement

The problem

Every time an agency wires an AI agent into a client's live system through MCP — the CRM, the ad account, the CMS, the analytics warehouse — that connection grants standing access, not a one-time favor. Nobody schedules a follow-up to revoke it. The project ends, the client leaves, the tool gets swapped for a competitor, the employee who set it up gets offboarded — and the access stays live, because killing a connection was never anyone's job the way granting one was. Most agencies running agentic AI across a client roster of any size are sitting on a growing pile of connections nobody can currently list, let alone justify, and the first time that becomes visible is usually a security questionnaire, an audit, or a breach notification the agency didn't cause but has to answer for anyway.

Agencies running AI agents across client accountsMarketing automation agenciesSEO agenciesWeb dev agenciesFull-service digital agencies

The fix

Build a standing inventory of every MCP and agent-to-system connection the agency has ever granted, tie a revocation trigger to every offboarding event — client churn, tool swap, employee exit — and run a recurring audit that treats an unexplained live connection as a finding, not background noise.

The Playbook

1

Build the inventory that doesn't currently exist

Most agencies can name the two or three MCP connections they set up last month. Almost none can list every connection ever granted across every client, tool, and employee since the agency started wiring agents into live systems. Start by pulling the raw list from every place a connection could have been created: MCP server configs, API key vaults, OAuth app authorizations inside client platforms, and anything a PM or strategist set up ad hoc without looping in whoever owns the tool stack. The point of step one is not to fix anything yet — it's to stop pretending the list is short.

2

Have Claude turn the raw list into a scored risk inventory

A flat list of connection names doesn't tell you where the exposure is. Feed the raw inventory to Claude and have it structure the risk by what each connection can actually do, not just that it exists.

You are helping me build a risk-scored inventory of AI agent connections into client systems.

Here is the raw list of MCP / API / OAuth connections I've found, with what I know about each: [PASTE LIST — client, system, what it was set up for, when, who owns it if known]

For each connection, tell me:
1. What level of access it likely grants (read-only, write, admin/delete) based on the system and integration type
2. Whether the reason it was created still applies (active client, active project, active employee) or looks stale
3. A risk tier: Critical (write/admin access + stale reason), High (write access + unclear owner), Medium (read-only + stale), Low (read-only + active and owned)
4. What I'd need to confirm before I can revoke or keep it safely

Sort output by risk tier, Critical first. Flag anything where you don't have enough information to score it instead of guessing.
3

Kill every connection tied to something that no longer exists

Anything scored Critical or High in step 2 gets resolved this week, not queued for later. A connection into a former client's system is not a courtesy to leave running — it's an unmonitored liability the agency can no longer see, and the client can no longer assume is gone just because the retainer ended. Revoke the access, confirm the revocation actually took (some OAuth grants survive a deleted API key), and log the date and who confirmed it.

4

Wire revocation into the offboarding checklist itself, not a separate audit

The reason this sprawl keeps happening is that access review lives nowhere in the normal offboarding flow. Add a line item to every offboarding checklist the agency already has — client offboarding, tool-swap offboarding, employee-exit offboarding — that requires someone to name every connection tied to what's being offboarded and confirm it's been revoked before the checklist can close. This turns access cleanup into a byproduct of a process that already happens instead of a separate initiative someone has to remember to run.

Add an access-revocation step to this offboarding checklist.

Current checklist: [PASTE CHECKLIST]
Offboarding type: [client / tool / employee]

Write a specific checklist item that:
- requires naming every MCP, API, or OAuth connection tied to what's being offboarded
- requires confirming each one is actually revoked, not just flagged
- blocks the checklist from being marked complete until this is done

Keep it as short and specific as the rest of the checklist — no generic "review access" line.
5

Run the full inventory audit on a fixed calendar, not when someone remembers

Offboarding triggers catch the connections tied to a known event. They don't catch the ones that went stale quietly — a tool that got swapped without a formal offboarding, a client that scaled down instead of churning, an employee who moved roles instead of leaving. Put the full inventory audit from steps 1 and 2 on a quarterly calendar slot with a named owner, so the connections that slip past every trigger still get caught within three months instead of surfacing in a security questionnaire two years later.

What changes

The agency can answer 'what does your AI have access to, and why' with a current, specific inventory instead of a guess — before a client's security team, a cyber insurance renewal, or an incident forces the answer out of them. Stale access gets killed on a schedule instead of accumulating silently, and the offboarding process that already exists does most of the cleanup work for free.

Every MCP connection your agency has ever wired between an AI agent and a client's live system is still doing exactly what it was set up to do — including the ones tied to a client you fired eight months ago, a tool you swapped out last spring, or an employee who left in the winter. Granting access was somebody's job. Revoking it was nobody's.

The real problem

Agentic AI made "just connect it to the live system" the default move for almost any workflow — pull data from the CRM, post directly to the CMS, adjust bids in the ad account, read the support queue. Each connection is genuinely useful in the moment it's created. None of them come with an expiration date, and almost none of them get revisited once the project that justified them ends.

The result is a pile of standing access that grows every quarter and shrinks almost never. A former client's CRM still has a live agent connection nobody remembers approving. A tool the agency stopped using still has an OAuth grant sitting in a settings page three clicks deep. An employee who left in Q1 still technically has a key that works. None of this is malicious. It's just that granting access has a clear owner and a clear moment it happens, and revoking it has neither.

The dangerous part of access sprawl isn't the connection you know about and haven't gotten around to killing. It's the one you've genuinely forgotten exists.

The fix

Build the inventory that doesn't currently exist: every MCP, API, and OAuth connection the agency has granted, scored by what it can actually do and whether the reason it was created still applies. Kill everything tied to a client, tool, or employee that's no longer active. Then make sure it doesn't come back — wire a revocation step into every offboarding checklist the agency already runs, so access cleanup happens as a byproduct of normal operations instead of a separate initiative that quietly falls off the priority list. Catch what slips past those triggers with a fixed quarterly audit and a named owner.

Why this matters

Clients are starting to ask what an agency's AI agents can touch, and "we're not entirely sure" is not an answer that survives a security questionnaire, a cyber insurance renewal, or a breach notification — even one the agency didn't cause. A former client finding out an agency's agent still had a live connection to their system months after the engagement ended is the kind of story that costs referrals, not just trust. The agencies that get ahead of this treat every connection as something with a lifecycle, not a one-way door.

Bottom line

Access sprawl doesn't announce itself. It just accumulates, quietly, one useful connection at a time, until someone asks the question the agency can't answer cleanly. Build the inventory, kill what's stale, wire revocation into offboarding, and audit on a calendar — before a client's security team finds the zombie connection before you do.

Tools in this play

More agency plays every week.

Real workflows for agency founders, not generic AI advice.

Subscribe