After a cloud env-var leak, why the new key should not go back into chat
Revoking the old key is only half the job. Once the new API key is pasted into Slack, a screenshot, or a ticket, you leave a searchable, syncable, archivable plaintext copy. The sections below split that second leak using a public incident, then spell out a handoff boundary you can check on the spot. This is not a Burn-Link how-to.
First, which round of leak
This article only answers why a rotated key should not go back into a chat window. It is not a form walkthrough for Burn-Link, and it is not a full incident report for any one host.
The second leak is the dangerous one
Round one happens on the host: someone else already read the old key. Round two happens in your hands: the new key becomes a message that will live on.
In late August 2026, the cloud deployment platform Zeabur published an incident titled “Unauthorized Access to Project Environment Variable Data.” The official status page says the attacker used a leaked internal AWS administrative credential, reached the primary database, and ran targeted queries and exports against project Variables. The stated target was AI-service API keys and other credentials that can be used immediately.
The same page lists exposed key names, including OPENAI_API_KEY, ANTHROPIC_API_KEY, OPENROUTER_API_KEY, DATABASE_URL, AWS_ACCESS_KEY_ID, plus common JWT, Stripe, and GitHub shapes. Custom variable names were counted as exposed when the value matched those credential formats. Zeabur told affected users to revoke and replace the listed credentials and to review third-party usage and charges. A circulating “full dataset for sale” screenshot is treated as unverified: the status page says the evidence they hold does not support that claim, and this article does not treat it as a confirmed fact.
Incidents like this have a fixed first-aid list: revoke the old key, check usage, rotate to a new one. Round one already happened on the host. You cannot pull a string back out of someone else’s hands. The step teams skip is round two: after the vendor console prints a new key, someone still has to give it to a teammate, paste it onto another machine, or drop it into a temporary ticket. If that hop is a chat window, the “just-rotated plaintext” is written into a record that can be searched, synced, and exported by an admin.
The platform name is only here to pin a date and a public record. The conclusion holds for any “rotate, then hand off” job: database passwords, CI tokens, a temporary SSH password. The danger is not that the teammate can see the secret. The danger is that every hop can keep a complete plaintext copy. This article does not rebuild a host’s hardening plan, and it does not sell UsePwd as a vault that could have stopped the host-side read.
What a chat window leaves behind
Chat software is built so spoken words can be found again. That is a feature for daily work and a defect for an API key.
Paste a string that starts with sk- into a channel and several copies appear at once. The message body enters workspace history. Desktop and phone clients each keep a cache. Many products also send the text into a server-side search index so someone can type “openai” three months later and pull it back. Admin exports, legal holds, and the “pack the chat archive” step during offboarding take that plaintext with them. Deleting one bubble usually does not delete the other person’s already-read push notification, a downloaded client library, or the frame a screenshot tool already saved.
That is a different problem from “I trust my teammate.” The teammate needs the new key so the service can start again. The channel, by default, stores a retrievable work record, not a secret that should exist only while it is being read. Writing “new key below” in a channel is also a notice to everyone who can search that channel later: people invited next quarter, anyone with audit-export rights, and whoever can reach a backup in the future. Secret-scanning writeups treat this as a known sprawl path; GitGuardian’s API-key guidance puts it plainly: do not share secrets unencrypted in messaging systems such as Slack.
Slack, Discord, and Microsoft Teams keep the body. A recall does not guarantee the other cache is gone.
Subjects, attachments, and comments on a cloud doc are indexed. One “forward all” duplicates the file again.
Support systems store images by ticket number. Photo backups, a projector, and a meeting recording are extra channels.
The check is blunt and it works: open the chat your team actually uses and search sk-, AKIA, ghp_, Bearer , or BEGIN PRIVATE KEY. Every hit is a past “send it for now.” Those strings do not become harmless because you clicked Rotate in a cloud console. The old key is dead on the vendor side. The copy in chat is still sitting there.
Before you send a ticket or paste a thread into a public channel, tokens, phone numbers, and ID-like strings in the body can be redacted in the current tab with Privacy Cleanup. The source text is not uploaded by default. That step answers “does the outbound text still carry a secret.” It does not answer “should the secret enter chat at all.”
Deleting the key from chat is not the end of a leak. The other side may already have copied it, screenshot it, or stored it in their own password manager. This article is about not making a new plaintext copy. It is not “delete the message and the secret comes back.”
Where rotation leaks again
Incident mail usually says “rotate immediately and check the bill.” What actually leaks is the twenty-minute handoff after that.
Spread a typical emergency runbook on the table and the danger is not “log into the vendor console and mint a new key.” It is the steps around that click. Someone screenshots the old key and asks a teammate “is this the one.” Someone captures the whole console page, so the address bar, other project names, and a billing figure land in Photos together. Someone mints the new key, the teammate is away from the desk, and the channel gets “use this for now.” All three turn plaintext into an object that will be kept.
Shared drives and git are easier to miss. A raw .env dropped into a team folder, or a sample commit that still contains a key, is another copy. Cloud sync writes that file onto every signed-in device. Changing the file later does not erase the string from older git commits. A local backup of a single file up to 5 GB should be turned into ciphertext in the current tab before it is stored, instead of uploading a plaintext .env as an ordinary document. UsePwd File Encryption Box does streaming local encryption with AES-256-GCM and writes .lock / .enc. The file is not uploaded by default. That is “keep a ciphertext file yourself,” not “stuff the key into chat.”
In the Zeabur incident, many users did not first see a “variables were exported” log line. They were told to watch AI vendor usage and charges. That is the operational signal: the old key may already have been used to call an API. If the new key then travels down the same chat channel the team always uses, the attacker does not need a second host intrusion. They only need to see how the team usually hands secrets around, and wait for the next one.
The new password itself should be random enough. Random mode is 6–128 characters, default 16; below 8, the tool warns that the secret is weak. Generate it in the Password Generator in the current tab — no sign-up. After that, do not “save it in the browser” and screenshot the password-manager row for someone else. That is the screenshot channel again.
Plaintext paste vs local encryption: what stays
You have to give a short secret to someone else, and you do not want the channel history to keep a string that can be used as-is. Compare what remains, then pick a tool.
A chat window hands over plaintext. Copying is easy on both sides. The cost is that the workspace, the search index, and the backups each hold a copy. Email attachments work the same way: once a .env or a notepad file is attached, the mail server and both clients have the full file.
A one-time encrypted link hands over “a ciphertext id plus decrypt material that stays on the device.” UsePwd Burn-Link encrypts the text in the current tab with Web Crypto and AES-256-GCM, then sends only ciphertext to the server. The decryption key is appended after # in s.html?id={id}#{key}. Create and read both work immediately — neither side registers. The server stores ciphertext, a TTL in hours, and a read count. It does not see plaintext, and there is no account system that can “recover it by user.”
Putting the key after # addresses host access logs and the HTTP request line: the browser does not send the fragment as part of the request. That layer is unpacked in Why URL hash fragments never reach the server. This article covers the next layer. Even if the key never enters a UsePwd request line, pasting the full link into chat still stores the whole address in that chat product. Anyone who has the complete URL can open the read page and decrypt until the read count is used up. Burn-Link limits how long ciphertext lives on the server, and how many times it can be read. It does not stop the recipient from taking a screenshot or forwarding the link.
History is searchable. After you revoke the old cloud key, the string in chat is still there.
When the read count is used up, the server deletes ciphertext. A dead link is not a wiped chat log.
The ciphertext file can sit on a drive. Hand the passphrase on a different channel — not in the same message.
So Burn-Link fits a short secret that should stop after reading: a new API key, a temporary database password, a one-time code. It is cleaner than pasting sk- into the channel, because history no longer holds a string that can call a vendor API directly. After the recipient opens it and the set count is reached, ciphertext on the server is deleted, and a late search result cannot open plaintext. You still have to trust the sending channel itself: do not post the full link in a public channel, and do not send a passphrase screenshot with it.
UsePwd has no accounts, no vault, and cannot recover a passphrase by user. If the link is lost, the fragment is truncated, or the read count is used up, the server cannot restore plaintext for you. Long-term storage, multi-device sync, or emergency recovery belong in a dedicated password manager. Do not read this site as an account system. Identity is explained on About.
A local-encrypted handoff cannot undo keys already exported on the host. Revoke the old ones first. This article only covers how to give a teammate the new key without leaving a second plaintext copy.
How to check the handoff on the spot
The goal is not to prove “nobody in the world can see it.” It is to prove this handoff did not leave usable plaintext in chat history.
-
01
Revoke the old key before you mint a new one
In the vendor console, revoke anything already exposed. Do not use a real production key for the practice below. A string you will recognize is enough, for example
demo-not-a-real-key-2026. -
02
Open Burn-Link before you open chat
Go to Burn-Link. The page works immediately — no sign-in. Encrypt the sample text into a link. The shape should be
s.html?id={id}#{key}: the query has only the id; the key sits after#. -
03
Send the link. Do not paste the sample text again
The chat window should show only the full URL. If you type “key is xxx, link below,” you leave plaintext and the link at the same time, and the one-time material is pointless.
-
04
After the recipient opens it, search the channel
Search for the sample string itself. You should not find that string in a message body — only the link. Then search
s.html?id=and confirm you did not truncate the URL before#. Without the fragment, the other person can fetch ciphertext and cannot decrypt it locally. -
05
If you need it, check the request in the Network panel
The create POST body should be ciphertext and two numbers, not the sample text. Later GET paths should carry only
id. That check is “did the key enter HTTP,” and it complements Security. Production may also send page and button names to/tj/for analytics. That payload is not plaintext.
Tickets need one extra pass. In a screenshot you are about to send to support, use Privacy Cleanup and check whether a token still appears in full. Cleanup runs in the current tab; the source text is not written into analytics. You are checking “does the pixel still hold a key you can paste and use,” not “is the ticket system safe.”
When a link is the wrong tool too
A one-time link reduces “a plaintext key in channel history.” It does not reduce “everyone who can see a screen.”
If the secret must be kept for a long time, synced across devices, or recovered later, do not use Burn-Link, and do not treat chat history as a safe. That is a password manager’s job. UsePwd does not provide accounts or a vault. After the read count is used up, or if the link is lost, it cannot restore the secret for you.
If the secret is a high-value master key, a root certificate, or a wallet seed that can move funds, neither a link nor a chat channel is enough. Say it in person, use offline media, or stay inside an end-to-end channel you already established. A fragment scheme does not stop a machine that is already owned, a browser extension that can read the current page, or a full URL projected onto a conference-room wall.
File backup is a different path: turn a plaintext .env into .lock / .enc on this machine, then put the ciphertext on a drive. Hand the unlock passphrase on a channel that is not the file itself. Do not collapse the two tools into one promise. Burn-Link governs how many times a short secret can be read. File Encryption Box governs a ciphertext file you keep.
Back to the question. After cloud environment variables are stolen, the old keys have to be revoked. There is no shortcut. The new key should not go back into a chat window because chat, by default, stores searchable plaintext, and the point of rotation is to make the old string die immediately — you should not spend the same minute making a copy that will live longer. When a teammate needs it once, use Burn-Link: local encryption, open immediately. When you need a backup you keep yourself, use File Encryption Box. Both pages, like this article, have only a language switch on the right of the top bar. There is no sign-in.
When you finish, check the channel
The article answers why a new key should not go back into a chat window. To create a burnable encrypted link, open Burn-Link — no sign-up.