Screen images from a failed test run held real customer data and were already attached to a ticket and copied into a shared build cache - what does containment involve now?
answer
- deleting the original is not containment
- count the copies before removing anything
- some copies you can only ask for
- residual exposure has to be written down
basics
~20 sContainment becomes an inventory, not a delete. Enumerate every copy - evidence store, ticket attachment, cache and its mirrors, exports, messages that quoted it, local downloads - remove the ones you can reach, and record the rest as residual exposure.
solid answer
~50 sWork outward from the original capture. The evidence store holds it; the ticket holds a second copy with a different owner and a different access list; the shared cache holds a third and may have replicated it to build agents; exports, message bodies and search previews may quote it; and anyone who opened it may hold a local copy. Some of those you can delete, some you can only ask for, and some - a point-in-time backup, a message somebody forwarded - you cannot reach at all. The output is therefore a written inventory: each copy, its owner, whether it was removed and when, plus an explicit statement of what remains exposed. Unlike a credential, a real name or account number cannot be reissued, so residual exposure stays exposure. Then fix the write path, or tomorrow's run leaks the same values again.
code
yaml · 20 linesexposure: run-evidence-2411
source: screen images, run 8842, failing checkout case
copies:
- location: run evidence store
owner: platform team
reachable: true
removed_at: 2026-05-04T09:10Z
- location: ticket attachment
owner: defect triage
reachable: true
removed_at: 2026-05-04T09:40Z
- location: shared build cache (3 agents)
owner: build platform
reachable: partial
note: two agents purged; third rebuilt from a snapshot
- location: chat message quoting the image
owner: unknown recipients
reachable: false
residual_exposure: image seen by an unknown number of readers; no recall possible
follow_up: redact the fields shown on that screen as the image is writtengo deeper
Be ready to say that a file holding real customer data has usually been copied by the time anyone notices, and that telling whoever owns the decision comes before quietly deleting it.
Explain how one captured image becomes several copies - evidence store, ticket, cache and its mirrors, quoted messages, local downloads - and that each has a different owner and a different route to removal.
An interviewer wants the inventory discipline: enumerate copies, mark each reachable or not, record removal times, state residual exposure plainly, and close with the write-path fix rather than with a cleanup.
Own the escalation threshold and the honesty of the write-up - which exposures leave the team, what the organisation is told, and how much you will spend to shrink the number of places run evidence is copied to at all.
## Containment is an inventory problem The instinct on discovering that a captured screen image holds real customer data is to delete it. Deleting it is the easy part, and it is not containment. From the moment evidence is produced it starts being copied, because being copied is what it is for: attached, quoted, cached, exported, downloaded and mirrored so that people can look at it later. Containment is therefore an act of enumeration first - find every copy - and only then an act of removal, over the subset you can actually reach. ## Where the copies are 1. **The run's evidence store.** The original. Usually deletable, often replicated internally, and sometimes swept into a backup on a schedule you do not control. 2. **The ticket attachment.** A second copy with a different owner, a different access list and its own retention. Deleting the first does nothing to it. 3. **The shared build cache and its mirrors.** Caches are replicated to agents by design, so one logical entry can be several physical files, and rebuilding an agent from a snapshot can restore what you removed. 4. **Messages and notifications that quoted the content.** Chat, mail, an alert body. These fan out to recipients you cannot enumerate and cannot recall. 5. **Search indexes and previews.** A thumbnail or an extracted text preview can outlive the file it came from. 6. **Local downloads.** Anyone who opened the image may hold a copy on a laptop, and nothing you control knows about it. | Copy | Typically reachable | What removal costs | | --- | --- | --- | | Evidence store original | Yes | Minutes | | Ticket attachment | Yes | Minutes, plus a note of what was removed | | Cache entry | Partly | An expiry or rebuild cycle, possibly a broken build | | Point-in-time backup | Rarely | Usually impossible to edit selectively | | Quoted message | No | Cannot be recalled once it has been read | | Local download | No | Depends entirely on the person who took it | ## What the effort actually produces The output of containment is a written inventory, not a claim. For each copy: where it is, who owns it, whether it was removed and when - and, for the ones that were not, a plain statement of the residual exposure with an owner and a review date. That last line is the one people are tempted to omit, and it is the only one that makes the rest credible. Two facts shape how far you can get. - **The value cannot be reissued.** A password or key can be replaced, which retires every copy of it at once. A real name, address or account number stays valid indefinitely, so a copy you cannot reach stays live for as long as it exists. - **The cost scales with the time the value spent unredacted**, because copying happens continuously and quietly in the background. An image found within the hour is a handful of copies; the same image a month later is an unbounded set. ## Escalation The team can decide about copies inside systems it owns. It cannot decide about content that reached people outside the access list, and it should not try. The threshold worth being able to state is this: evidence that stayed within a known access list and was removed quickly is a defect to record and fix; content that left that list, or that cannot be accounted for, goes to whoever owns privacy decisions in the organisation. Where a privacy regime applies there may be notification duties with clocks attached, and those are not an engineer's call to make alone. ## The part everyone skips Once the copies are gone, the write path is still writing the same values into the same channels, and tomorrow's run reproduces the leak exactly. The closing action is the fix: redact the fields shown on that screen at the moment the image is written, add the planted-value check that would have caught it, and - where the real values came from a live dependency - stop them at your own boundary instead. A containment report without that follow-up is a promise to repeat the exercise. A useful test of honesty: read the write-up and ask whether somebody outside the team could tell, from it alone, how many copies still exist. If the answer is *none, because it does not say*, the effort is not finished.
- The cache entry cannot be removed without breaking builds. What now?Treat it as a reachable copy with a cost, not as an unreachable one. Expire or rebuild the entry on the next scheduled pass, restrict who can read the cache in the meantime, and record the window. If it genuinely cannot be replaced, the honest outcome is a documented residual exposure with an owner and a review date, not a claim that the leak is contained.
- Why can containment never fully close a leak of personal data?Because the value cannot be reissued. A password or key can be replaced, which retires every copy of it at once; a real name, address or account number stays valid for years, so every copy that survives stays live. Containment can only reduce the number of holders and the time they hold it, which is why the write-path fix matters more than the cleanup.
- How do you decide whether this goes beyond the team?By what left the team's control and who it belongs to. Evidence that stayed inside a system with a known access list and was removed within a short window is a defect to record. Content that reached people outside that list, or that you cannot account for, goes to whoever owns privacy decisions. Where a privacy regime applies there may be notification duties with clocks attached, and that call is not the engineer's alone.
Recalling a leaked file is like recalling a printed newsletter: you can collect the stack still in the office, never the ones already carried home.
saying these in an interview costs you the question
- Deletes the original file and calls the leak contained
- Assumes a cache holds a single copy on one machine
- Forgets the ticket attachment has its own access list
- Reports containment complete without listing what remains
- Believes a sent message can simply be recalled
- Skips the write-path fix once the copies are gone