ooligo
claude-skill

Inventory your AI tools for preservation scope

Difficulty
advanced
Setup time
3-6 hours
For
legal-ops-manager · in-house-counsel
Legal Ops

Stack

A Claude Skill that turns an organization’s AI-tool footprint into a preservation-scope inventory: for each tool, where prompts and outputs persist, what deletes them and on what clock, whether an existing legal hold already reaches that data, and which custodian-questionnaire and hold-notice language has to change because of the answer. The bundle ships at apps/web/public/artifacts/ai-data-source-inventory-skill/ and contains SKILL.md plus three reference files, one of which you fill in before the first run.

The Skill is read-only. It places no holds and releases none, because both are legal decisions belonging to a named person.

The gap it closes

Data maps built before 2023 list mail, chat, file shares, and line-of-business systems. The AI layer got added to those same systems without getting added to the map, and the standard responses to that are both wrong in ways that look responsible.

The first is treating AI tools as a security problem that has been handled. A shadow-AI discovery exercise produces a list of apps and a set of blocks, and the list gets filed. That list answers who is using what. It says nothing about what record the usage leaves, which is the only question preservation cares about.

The second is assuming that retention and preservation are the same fact. They are independent, and the interesting rows are where they diverge. Microsoft 365 Copilot chat is preserved by controls most organizations already run — prompts and responses are copied into a hidden folder in the user’s own Exchange Online mailbox, and Microsoft documents that permanent deletion is suspended when that mailbox is under Litigation Hold, a delay hold, an eDiscovery hold, or another retention policy for the same location. So a custodian on a mailbox hold already has their Copilot chat preserved, whether anyone decided that or not. Copilot memory, in the same product, goes the other way: Microsoft states that Purview retention policies and retention labels do not apply to Copilot memory and that no admin control enforces retention on it, while saved and inferred memories stay discoverable through eDiscovery and Graph Explorer. Discoverable and unprotected is the worst pair of properties a data source can have.

When to use

When a hold is going out and the custodian source list predates the AI layer. When opposing counsel serves an ESI request or a Rule 26(f) proposal naming chatbot logs or prompt history. When a defensible-deletion program is about to start deleting and nobody has established what the AI layer copies or leaves behind. When security finishes a shadow-AI sweep and the output needs a records reading rather than a security one.

When NOT to use

  • A hold is already late. Issue the notice on the broadest defensible scope first, inventory second. An inventory is not a reason to delay a notice.
  • Fewer than roughly eight AI tools, one identity provider, everything SSO-gated. Read the four admin consoles directly. The schema is overhead at that size.
  • You need the data collected, not scoped. references/2-retention-behavior-profiles.md records whether an export path exists and who can run it; it does not run one.
  • You cannot reach any administrative console. Every phase after discovery depends on tenant configuration you must be able to read. Without it the run produces a list of vendor marketing claims that looks like an inventory.
  • Nobody will fill in Part D. The known-tools registry in references/1-ai-tool-discovery-sources.md is what makes an undiscovered tool report as unregistered. Without it every finding reads the same.

What the skill actually does

Six phases, fixed order, with hard refusals in two of them.

Phase 1 collects from four discovery planes — identity provider grants, spend, endpoint and browser telemetry, and the known-tools registry. They are deliberately redundant because each is blind in a different direction: the identity provider cannot see a tool someone pays for with a personal card, spend cannot see free tiers, telemetry cannot see tenant configuration, and the registry only sees what people wrote down. A tool found by one plane is a different confidence class from one found by three, and the single-plane finds carry the problems, because a tool nobody procured is a tool nobody configured.

Phase 2 refuses on fewer than three planes, or on any plane returning zero records. A zero-record plane renders as COLLECTION FAILED, never as a clean result. The characteristic failure of this work is a tidy inventory of the twelve tools that were easy to find.

Phase 3 builds a retention profile per tool from vendor documentation and tenant configuration only. Every field carries a source_url and a checked_on date; a field missing either renders as unknown rather than falling back to a default, because a plausible default is how an inventory goes wrong quietly. Profiles split by feature, not just by tool — Copilot chat and Copilot memory are two rows with opposite answers.

Phase 4 classifies reachability into four states and this is the design choice that separates the output from a data map. held means an existing control already attaches. retained-not-held means the data exists and is discoverable but no hold mechanism reaches it, so preservation is an affirmative collection task with a date rather than something you place and forget. not-retained means the interaction leaves no durable record — Google states that Vault’s Gemini app support does not apply to Gemini in Google Workspace features embedded in other apps, such as “Help me write” in Gmail and Docs, because those interactions are not retained the same way. vendor-held-only means the record sits solely in vendor systems your holds cannot touch, which is a possession-custody-or-control question for counsel rather than a configuration task for IT.

Then it runs the test backwards, listing which AI sources each existing hold silently sweeps in. Over-preservation is a reportable finding: it inflates review volume and it contradicts any written schedule claiming AI interactions are not preserved.

Phases 5 and 6 derive the questionnaire and notice deltas from references/3-custodian-questionnaire-deltas.md and report, leading with the retained-not-held and vendor-held-only rows because those need a decision this week.

Cost and throughput

Compute is not the budget. The Skill reads exports and vendor documentation; profile write-ups run roughly 600-900 output tokens each, so a 40-tool estate costs well under a dollar in model spend.

The human cost is the whole number, and it is an estimate rather than a measured figure: plan 2-4 hours to pull the four planes if the exports exist, then 15-30 minutes per tool for documentation and tenant verification. A 40-tool footprint is a 10-20 hour first pass, most of it in Phase 3. Part D of the discovery reference persists, so the second run is a diff and costs a fraction of the first. Re-run per matter, and quarterly as standing readiness.

Failure modes

  • Confusing “retained” with “reachable by a hold.” The team reports coverage that no hold actually produces. Guard: reachable_by_existing_hold cannot be inferred — the schema requires naming the specific control that does the reaching, and vendor-side retention for the vendor’s own purposes does not qualify.
  • Verifying preservation by looking at the app. Guard: Microsoft states that messages visible in AI apps are not an accurate reflection of whether they are retained or permanently deleted. Phase 4 verification is an eDiscovery search returning a hit count against a known custodian, never a screenshot.
  • Reading the configured retention period as the deletion date. Microsoft’s own worked example shows a delete-after-one-day policy taking up to 16 days before items stop being returned by eDiscovery, because the timer job runs on a 1-7 day cycle and the SubstrateHolds folder adds at least one more day. Guard: the schema separates policy_period from observed_deletion_lag, and defensible-deletion certifications cite the second.
  • Assuming a licence means capture. Purview’s retention locations reach ChatGPT, Google Gemini, consumer Copilot, and DeepSeek only when a collection policy with content capture is configured, which requires the Content contains classifiers condition set to All — and Microsoft states it does not include content in files shared with generative AI. Guard: collection-policy state is a per-tool tenant-configuration field, not an org-level assumption.
  • Treating vendor terms as stable. The preservation order in the New York Times matter required OpenAI to retain output log data that would otherwise have been deleted; that obligation ended on 2025-09-26 and the order was terminated by stipulation on 2025-10-09. Google Vault only gained retention rules and litigation holds for the Gemini app on 2026-06-11. An inventory written either side of those dates is wrong on the other side. Guard: every profile carries checked_on, and anything past the recheck interval renders as unverified and is counted in the report header.
  • The inventory becomes an HR document the moment it names individuals doing something unapproved, and cooperation collapses. Guard: Phase 1 aggregates to tool and count; custodian-level detail is written to run_dir/custodians/ and referenced by path, never inlined into the report.

vs alternatives

vs an eDiscovery vendor’s AI-source connector. Onna, Exterro, and Reveal sell collection from cloud sources, and when you have a matter and need the data out, a connector beats hand-rolling every time. It solves the adjacent problem. You still need the inventory to know which connectors to buy, and connectors do not exist for the sources with no export path at all — which is where the retained-not-held rows sit.

vs Purview DSPM for AI alone. For a Microsoft-centric estate it is the strongest single discovery plane available, and the bundle uses it as one. Two limits keep it from being the answer: it reports AI app usage rather than what survives that usage, and its reach into non-Microsoft tools depends on the browser plane plus a collection policy that most tenants have not configured.

vs asking IT for the app list. Fastest option, and the answer is the SSO list — which structurally excludes non-SSO and personal-account usage. That excluded population is precisely the one with the worst preservation posture, so the fastest method has its blind spot exactly where the findings are.

vs a spreadsheet. The honest comparison, since it is what most teams do. Fine at ten tools. The parts worth not rewriting are the profile schema with its mandatory source_url, the four-state classification, and the reverse hold test, because those three are what people get wrong when they build the spreadsheet themselves.

Related: ediscovery-custodian-questionnaire-skill for the interview this inventory feeds, legal-hold-process for the notice mechanics, and microsoft-purview-ediscovery for the tenant-side tooling most of these findings route through.

Files in this artifact

Download all (.zip)