TL;DR
On May 6, 2026, AI evaluation startup Braintrust confirmed unauthorized access to an AWS cloud account containing API keys that customers had stored with the service to access cloud-based AI models (OpenAI, Anthropic, Google, etc.). Braintrust asked every customer to rotate any keys stored on the platform. If you're inside that customer set — or if you've ever stored API keys with any AI evaluation or orchestration vendor — you now have a compliance documentation problem: prove what keys existed, when they were rotated, and that new keys haven't been used inappropriately. Convert: Anything to PDF turns the heap of rotation receipts, AWS CloudTrail extracts, vendor portal screenshots, and internal incident response notes into a clean, archivable audit trail — all locally.
What happened at Braintrust
The public disclosure on May 6, 2026:
- Vector: unauthorized access to one of Braintrust's AWS accounts
- Data at risk: customer-stored API keys used to access cloud-based AI models
- Action requested of customers: rotate any keys stored with Braintrust
- Scope: Braintrust's customer base of AI/LLM evaluation users
Braintrust is one of several AI orchestration startups that hold customer credentials to call downstream model APIs. The breach is a textbook case of why holding third-party credentials is risky: a single compromise at the orchestration layer puts every customer's underlying API access at risk.
If you're a Braintrust customer, your immediate actions are technical (rotate keys). Your downstream actions are documentation (prove you rotated, when, and that nothing happened in the meantime).
What documentation you'll need
A typical post-breach audit trail includes:
| Document | Source | Format |
|---|---|---|
| Initial breach notification | Vendor email | HTML / EML |
| Vendor's incident disclosure page | Vendor blog | HTML |
| Your internal incident ticket | Linear / Jira / Notion | HTML / DOCX |
| List of keys held with vendor | Vendor portal export | CSV / JSON |
| OpenAI API key rotation receipt | OpenAI dashboard | HTML / Screenshot |
| Anthropic API key rotation receipt | Anthropic Console | HTML / Screenshot |
| Google AI Studio key rotation receipt | GCP Console | HTML / Screenshot |
| AWS CloudTrail logs (covering exposure window) | AWS Console | CSV / JSON |
| Your usage logs (for the exposure window) | Internal dashboards | CSV / Screenshot |
| Customer communications (if applicable) | EML / HTML | |
| Internal post-mortem | Notion / Confluence | HTML / DOCX |
That's 10+ documents across 6+ formats. They need to be archived in a way that's:
- Timestamped — so an auditor can verify when each piece was captured
- Local — so the audit trail itself doesn't go through a third-party tool that becomes the next breach
- Searchable — so you can find the specific event quickly during an audit
- Portable — PDF is the universal artifact format
Convert: Anything to PDF handles all those formats locally, in one Chrome extension.
The standard incident-response documentation flow
Here's a sequence that works for the Braintrust event — and for any future "vendor X was breached, rotate your stuff" incident:
Hour 0 — capture the disclosure
Save the vendor's incident page using Convert: Web to PDF. Capture the email you received. The vendor's wording often softens over time as they update the page; the original wording matters.
Hour 1 — list affected keys
Inside the vendor portal (Braintrust in this case), list every API key you'd stored. Screenshot the list. Export to CSV if possible.
Hour 2 — rotate downstream keys
For each key:
- Log into the underlying provider (OpenAI, Anthropic, Google, etc.)
- Revoke the old key
- Generate a new key
- Screenshot the revocation confirmation
- Screenshot the new key fingerprint (NOT the key itself)
- Update the vendor portal (or remove the entry if you're abandoning the vendor)
Hour 3 — pull access logs for the exposure window
- AWS CloudTrail for any AWS resources that the keys could've touched
- OpenAI / Anthropic / Google API logs for usage during the window
- Your internal usage logs for the same window
- Export each as CSV or JSON
Hour 4 — capture internal communications
Save your team's Slack thread, Linear ticket, internal Confluence page. These show the response timeline and decisions made.
Hour 5+ — assemble the audit packet
Use Convert: Anything to PDF to merge everything into a single audit packet PDF. Order it chronologically:
- Original disclosure
- List of affected keys
- Rotation receipts (per provider)
- Access logs (per provider)
- Internal communications
- Post-mortem
That's the document an external auditor will want when they ask "what happened with Braintrust?"
Why "do it locally" matters here especially
There's a deep irony in using an online PDF tool to assemble a breach response artifact. The whole reason you're rotating keys is that a vendor with custodial access to credentials had a bad day. The last thing you should do next is upload the resulting audit packet — which now contains key fingerprints, access logs, vendor disclosure language, and the names of every team member involved in the response — to another third party's servers.
Convert: Anything to PDF processes files in the Chrome extension sandbox on your machine. The audit packet is built locally, written to your local disk, and never leaves.
Compare to SmallPDF / ILovePDF / Adobe online: each of those routes your DOCX, CSV, and HTML through their infrastructure. Some retain content for "abuse prevention." Some have had documented breaches themselves. Adding another third party to a breach response is the wrong shape.
What about CloudTrail-derived evidence?
AWS CloudTrail exports access logs in CSV or JSON. For an audit packet, the typical pattern:
- Pull CloudTrail events for the affected access keys, scoped to the exposure window
- Save the CSV export to disk
- Open the CSV in a spreadsheet, highlight rows of concern (any access from unfamiliar IPs, any IAM changes, any unexpected resource access)
- Save as PDF via Convert: Anything to PDF — preserves the highlighted version
- Keep the raw CSV alongside, in case the auditor wants to re-run analysis
The PDF is the human-readable artifact; the CSV is the source of truth. Both belong in the packet.
A pattern: per-vendor incident folders
Many organizations are accumulating "vendor X had a breach" folders in 2025–2026. A standardized structure helps:
/breaches/
/2026-05-06-braintrust/
01-disclosure.pdf
02-affected-keys.csv
03-rotation-receipts.pdf (merged)
04-access-logs.csv
05-access-logs-annotated.pdf
06-internal-comms.pdf
07-postmortem.docx
AUDIT-PACKET.pdf (merged from above)
The folder structure is yours to define. The principle is: each vendor incident gets its own folder; each folder ends with one merged PDF that an auditor can be handed.
Convert: Anything to PDF vs alternatives for incident response
| Tool | Local | DOCX | XLSX | CSV | Images | HTML | Merge | Free | Account |
|---|---|---|---|---|---|---|---|---|---|
| Convert: Anything to PDF | Yes | Yes | Yes | Yes (rendered) | Yes | Yes | Yes | Yes | No |
| SmallPDF | No | Yes | Yes | Yes | Yes | Yes | Yes | Limited | Yes |
| ILovePDF | No | Yes | Yes | Yes | Yes | Yes | Yes | Limited | Yes |
| Adobe Acrobat | Mixed | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
| Pandoc CLI | Yes | Yes | No | No | Yes | Yes | Yes | Yes (CLI) | No |
| Microsoft Word | Yes | Yes (only) | No | No | Yes | Limited | No | Paid | Yes |
For incident response specifically, "Local: Yes" + "Account: No" is the only sensible answer. The audit packet contains material that should never be near another third party while it's being assembled.
What if you're not affected by Braintrust specifically?
The same workflow applies to any vendor incident in 2026 — and there are a lot:
- Vimeo confirmed user and customer data breach (third-party vendor vector)
- Instructure / Canvas confirmed student data breach affecting personal email, names, teacher-student messages
- Vercel breach implications for online PDF tool ecosystem
- 108 malicious Chrome extensions campaign affecting users globally
- Multiple ransomware victims including Earth Systems Europe, Egnyte, Elia Law Firm, EMA Engineering, Excel Healthcare (May 2026)
For each of these, if you're a customer or user, the response shape is the same: capture, rotate/remediate, log, assemble, archive. Convert: Anything to PDF is the conversion layer; the discipline is yours.
Tips for the "rotation receipts" page specifically
OpenAI, Anthropic, Google AI Studio, and Azure OpenAI all show API key management dashboards that are HTML pages, not downloadable files. To capture rotation evidence:
- Take a screenshot of the key list before rotation
- Rotate the key
- Take a screenshot of the key list after rotation (showing the old key is revoked and a new one exists)
- Use Convert: Web to PDF on the post-rotation page to get a timestamped record
- Merge both screenshots into your audit packet
The before-and-after pair is what an auditor wants to see: proof that the old key existed, proof that you revoked it, proof that the new key is what's currently in service.
Compliance frameworks this maps to
The audit-packet pattern aligns with:
- SOC 2 — vendor incident response evidence
- ISO 27001 — A.16 information security incident management
- NIST CSF — Respond function evidence
- PCI-DSS — incident response and forensic data
- HIPAA — breach notification documentation (if PHI was potentially exposed)
- EU GDPR — Article 33 breach notification documentation
- CCPA / CPRA — annual cybersecurity audit requirements (now in force as of January 2026)
The exact required artifacts vary by framework, but the category — timestamped, local, complete, portable — is universal. PDFs assembled with Convert: Anything to PDF hit all those targets.
A note on AI tools and breach documentation
It's tempting to use an LLM to summarize your incident — "draft the post-mortem based on these CloudTrail logs." Be careful:
- Don't paste API keys (or fingerprints that map to keys) into LLM prompts
- Don't paste internal incident-specific identifiers into general-purpose LLM web UIs
- If you must use AI, use it on anonymized versions of the artifacts
Better pattern: build the audit packet locally first, then if you want AI-assisted post-mortem drafting, work from a redacted version. The original packet stays local; only the redacted version touches an LLM.
For tracking which AI models are best for the post-mortem drafting step, CineMan AI compares the major options without uploading anything itself.
Frequently asked questions
Q: How quickly should I rotate keys after a vendor breach notification?
Treat it as same-day. The window between disclosure and "all customers have rotated" is the window an attacker can still use stolen keys. Best practice: rotate within hours.
Q: Should I delete keys from the vendor portal instead of rotating?
If you're discontinuing use of the vendor, yes — delete from the vendor side. Either way, revoke the underlying provider keys (OpenAI / Anthropic / etc.). Don't leave a dangling reference.
Q: What if I don't remember which keys I stored with the vendor?
Pull the vendor portal's "stored credentials" or "API key" page. Most platforms list them. If yours doesn't, treat all your provider keys with that vendor's intended scope as potentially exposed and rotate them all.
Q: How long should I keep the audit packet?
For most frameworks, 7 years (matching financial / tax retention). For HIPAA-covered entities, 6 years from creation or last effective date. For GDPR, indefinite as long as you're using the documentation in active compliance.
Q: What about access logs from OpenAI / Anthropic — are they granular enough?
OpenAI provides usage logs per API key. Anthropic's Console shows usage per organization. Granularity varies; pull what's available and document any gaps explicitly in your post-mortem.
Q: Can I include the breach notification email as PDF?
Yes — save the email as HTML (in Gmail: "Show original" or print to PDF), then merge with the rest of the packet via Convert: Anything to PDF.
Q: What if the vendor never tells me directly and I find out from the news?
Note in your post-mortem when you became aware and how. If notification was delayed beyond statutory windows, that's relevant to any future dispute with the vendor.
Q: Should I notify my customers if my keys were exposed via Braintrust?
Depends on what those keys had access to. If keys could call models on your customers' behalf, or if logs / data attributable to customers were touched, yes — and the GDPR / CCPA timelines apply. Get legal advice fast.
Q: Are screenshots admissible as audit evidence?
Generally yes for incident response. Auditors prefer screenshots with full URL, system clock, and user identity visible. The "browser address bar plus system clock" is the cleanest framing.
Q: How do I store the audit packet securely?
Encrypted disk; access-controlled folder (S3 with KMS encryption, or equivalent); restricted to security / compliance team. The packet itself contains sensitive material — treat it as production data.
Q: Can I share the packet with my SOC 2 auditor?
Yes. Provide it through whatever channel the auditor uses for evidence — typically a controlled portal. Don't email PDFs containing key fingerprints over plain SMTP.
Q: What about the AWS CloudTrail format — is it directly convertible?
CloudTrail JSON is convertible, but for readability auditors typically prefer a CSV view. Export from AWS Console as CSV, optionally annotate in a spreadsheet, then convert to PDF.
Bottom line
Vendor breaches in 2026 are routine enough that having a standard incident-response documentation flow is part of the basic cost of doing business. Braintrust's May 6 disclosure is one of many in a year that has already seen Vimeo, Instructure, Vercel, and a 108-extension malware campaign.
The right response pattern: capture, rotate, log, assemble, archive — all locally. Convert: Anything to PDF is the conversion layer that makes "assemble" possible without adding another third party to the chain. Pair it with Convert: Web to PDF for vendor disclosure pages and provider portals, and you have a sustainable incident documentation discipline that holds up to any SOC 2, ISO 27001, or GDPR audit.