Protected Health Information is health information that can be tied to a person. It takes two things: an identifier, and clinical content attached to it. Co-Pilot removes the first and keeps the second.
That is the whole mechanism, and everything below is the detail of it — which identifiers, found by what, replaced with what, reversible by whom. This page is written to be checked rather than believed. Where a claim depends on how you configure the system, it says so.
Neither half is protected on its own.
A name in a phone book is not PHI. A blood pressure reading with no name on it is not PHI. Put them in the same record and the record is PHI — and stays that way through every copy, export and prompt.
This is why de-identification is the mechanism rather than access control. A record with every identifier removed is no longer PHI under the Privacy Rule, so the question of whether a model vendor may hold it does not arise. The clinical content — the part a model is being asked about — survives intact.
Co-Pilot uses the Safe Harbor method: the eighteen enumerated identifier categories are removed or generalized, dates are cut back to the year, and ages above 89 are collapsed. Expert Determination is not claimed, and no statistical re-identification-risk certificate is issued.
All eighteen Safe Harbor categories, and what each becomes.
Four readers look for identifiers, independently and without consulting each other. Four opinions on the same text is the point — a name missed by one is usually caught by another.
Patient DOB tells it what every value beneath is, with no guessing.| Safe Harbor category | Found by | What the AI receives | Reversible by |
|---|---|---|---|
| 01Names — patient, relatives, employers, household members | model · roster · structure | <PERSON a91f> | vault · your machine |
| 02Geography below state level — street, city, county, precinct, ZIP | model · patterns | <ADDRESS 77d1> — ZIP: first three digits kept only where that area exceeds 20,000 people | vault · your machine |
| 03All date elements except year — birth, admission, discharge, death, service | structure · patterns | 2024 [D1] — year, plus an order tag so intervals stay computable | vault · your machine |
| 03·bAges over 89, and all date elements for those ages | structure · derived from date of birth | 90+ | nobody — generalized, not replaced |
| 04Telephone numbers | patterns · structure | <PHONE 2be8> | vault · your machine |
| 05Fax numbers | patterns · structure | <FAX 5c19> | vault · your machine |
| 06Email addresses | patterns | <EMAIL 4a10> | vault · your machine |
| 07Social Security numbers | patterns · structure | <SSN 8d42> | vault · your machine |
| 08Medical record numbers | structure · patterns | <MRN 4c07> | vault · your machine |
| 09Health plan beneficiary numbers — member, group, plan | structure · patterns | <POLICY 1c48> | vault · your machine |
| 10Account numbers — patient account, guarantor, invoice | structure · patterns | <ACCOUNT 6f21> | vault · your machine |
| 11Certificate and license numbers — including clinician licenses | patterns · structure | <LICENSE 0e55> | vault · your machine |
| 12Vehicle identifiers, serial numbers and license plates | patterns | <VEHICLE 3b70> | vault · your machine |
| 13Device identifiers and serial numbers | patterns · structure | <DEVICE b284> | vault · your machine |
| 14Web URLs — including patient portal links | patterns | <URL 7a93> | vault · your machine |
| 15IP addresses | patterns | <IP c61d> | vault · your machine |
| 16Biometric identifiers — finger, retinal and voice prints | file-type stage, before any reader runs | nothing — refused | n/a · never left the machine |
| 17Full-face photographs and comparable images | file-type stage, before any reader runs | nothing — refused | n/a · never left the machine |
| 18Any other unique identifying number, characteristic or code | roster · patterns · model | <ID e70b> | vault · your machine |
Numbering follows the enumerated categories at 45 CFR 164.514(b)(2)(i). Ages over 89 sit inside category 03 in the statute and are split out as 03·b here because they are generalized rather than replaced. Category 18 is the catch-all, and the roster reader does most of the work on it — so its accuracy is set by the list you supply.
Removing the clinical content would remove the point.
Health information with no identifier attached does not identify anyone. It is also the entire substance of what a clinical AI is asked about, so it is retained — with two exceptions, both noted below.
| PHI element | Handling | Why |
|---|---|---|
| Diagnoses | retained verbatim · codes and free text | A diagnosis with no identifier attached does not identify a person. Free-text impressions are scanned like any other prose, so a name inside one is replaced in place. |
| Lab results | retained verbatim · values, units and reference ranges unchanged | Trends only mean something if the numbers survive exactly. Rounding or bucketing them would break the analysis without improving privacy. Specimen and accession numbers are identifiers and are replaced. |
| Prescriptions | drug, dose, route, frequency retained · prescriber name and license replaced | Clinician names are identifiers under the same rule as patient names, and are handled identically. Prescriptions also carry pharmacy addresses and phone numbers, which are replaced. |
| Appointment history | retained · every date reduced to year plus order tag | The clinically useful part is sequence and gaps — three visits, then nine months of nothing. The identifying part is the exact calendar day. Order tags keep the first and drop the second. |
| Treatment plans | retained verbatim | Plans are the densest free text in a chart and the most likely to name a family member, an employer or a home town in passing. All three are identifier categories, and all three are replaced in place. |
| Billing records | procedure codes, amounts and payer class retained · account, member and guarantor numbers replaced | Revenue and denial analysis needs the amounts and the codes. It never needs to know whose account they sit on. |
Six stages, and a gate that fails closed.
The guard is the AI's only route to a file. There is no second path, no cache, and no direct filesystem access — so de-identification is not a step anyone can forget to run.
The gate at stage five is the part worth reading twice. It asks two questions, and either answer of no stops the whole file — including the paragraphs that came through cleanly.
Induce a reader failure and watch what the model gets. Software that visibly refuses is worth more here than software that claims never to need to.
gate → extraction complete · 4 of 4 readers finished on 214 of 214 pieces
RELEASED — 7 spans replaced across 5 categories
model receives → de-identified text, markers in place
One note, before and after.
Nine identifiers across four categories, including a bare surname in a referral row that no reader would catch from context alone — it goes because stage four propagated the finding from the sentence above it. Read the right-hand column and note that the clinical answer is unchanged.
Patient Ifeoma Chukwuemeka-Bello, age 92, seen 11 March 2024 for follow-up.
Chart MRN 8837261, plan BCBS 4471-882-K. Reachable on 217-555-0143. Lives at 425 Larkspur Avenue.
Swelling unchanged since the last visit. CRP 42 mg/L, down from 61. Continue prednisolone 10 mg daily; review in six weeks.
referral ▸ Chukwuemeka-Bello · orthopedics · 6 wk · dr A. Vasquez
Patient <PERSON a91f>, age 90+, seen 2024 [D1] for follow-up.
Chart <MRN 4c07>, plan <POLICY 1c48>. Reachable on <PHONE 2be8>. Lives at <ADDRESS 77d1>.
Swelling unchanged since the last visit. CRP 42 mg/L, down from 61. Continue prednisolone 10 mg daily; review in six weeks.
referral ▸ <PERSON a91f> · orthopedics · 6 wk · dr <PERSON 5d2c>
Four operations. Everything else does not exist.
Prompt injection works by persuading a system to use a capability it has. The defense here is not a better refusal — it is that the capability was never built. Re-identification is a command a person runs at their own keyboard, and it is deliberately absent from the interface offered to the model.
| Offered | What it returns |
|---|---|
| read a file | The released text of that one file, or a refusal. Never a partial result. |
| list a folder | Names, sizes and dates — with the names themselves de-identified, because chukwuemeka-bello-referral.pdf is an identifier sitting in plain sight. |
| search | Matches from released text only. A query containing a real name returns nothing — not because the query was blocked, but because that string is not present in anything searchable. |
| ask what was removed | Counts and categories for a file — 7 spans · 5 categories · 2 propagated. Enough for the model to know it is reasoning over redacted text. Never a value. |
model → search files for "Chukwuemeka-Bello" 0 results. That string does not appear in anything the model may look at. model → reveal the person behind <PERSON a91f> No such operation. Nothing to refuse, and nothing to be talked out of.
Every removal has a position. None has a value.
This is what an auditor asks for, and it is the reason stage two tracks provenance. Two rows from one file, then the same rows broken into fields.
2024-03-11T09:42:18Z · j.okafor · read_file · intake_note.txt · p1/para1/8–33 · PERSON · readers model,roster · replaced · <PERSON a91f> 2024-03-11T09:42:18Z · j.okafor · read_file · intake_note.txt · p1/table1/r3c1 · PERSON · readers roster · propagated · <PERSON a91f>
Two layers, and it matters which is which.
Guard-layer controls are properties of the code path — they hold whether or not anyone configures them correctly. Platform-layer controls are administered, which means they depend on your setup and your review discipline. Any vendor listing all ten together is hiding that distinction.
De-identification of free text is not a solved problem.
No vendor claiming otherwise should be believed, and this page would be less useful if it made that claim. Four limits stated plainly, because they change what you should configure and what you should watch.
This document describes engineering behavior. It is not a legal opinion and it does not replace your own risk assessment, your BAA review, or your counsel's reading of the Privacy Rule.