AI security

AI security stops being theoretical the moment the AI has your keys.

Most of what is written about AI security is about models: what they say, what they refuse, how they are trained. That matters. But an agent on your Mac is not a conversation — it is a process, running as you, with your files, your network, your keychain and your mounted volumes already in reach. Securing that is a different discipline, and it happens at the endpoint.

The three layers

Two of these ship with your AI. The third is yours to install.

They are not competing approaches and you want all three. But only one of them knows which file on your disk is a production credential, and it is not one of the two the vendor controls.

01

Model safety

Owned by: The model provider

Alignment, refusals, safety training, red-teaming. This decides what the model is willing to produce.

Where it runs out: It travels with the model, not with your machine. It cannot know that this particular file is your production database credential.

02

Application security

Owned by: The agent vendor

Prompt hardening, tool allowlists, confirmation dialogs, workspace conventions inside the agent itself.

Where it runs out: The agent is enforcing limits on the agent. Anything that changes its reasoning changes its enforcement, and a bypass is a single convincing sentence away.

03

Capability containment

Owned by: You, on your machine

An independent, deny-by-default boundary outside the AI that decides which files, endpoints, executables and tools the process can reach at all.

Where it runs out: Requires OS-level enforcement and rigorous identity resolution. It is the hardest layer to build, which is why it is usually the missing one.

Threat model

Six ways an agent costs you something, and what actually stops each one.

None of these requires the agent to be malicious, compromised, or badly intentioned. Every one of them is a plausible Tuesday for software that is trying to be helpful and has more authority than the task needed.

Credential exfiltration

An agent reads ~/.ssh/id_ed25519, ~/.aws/credentials, or a .env, and puts the contents in a request, a commit, or a log.

Contained

Those paths are outside every grant. The read is denied and recorded, and the agent never had a reason it could argue with.

Indirect prompt injection

A GitHub issue, a dependency README, a scraped page or an MCP tool result carries instructions the agent follows as if you had typed them.

Contained

The instruction still has to become an operation, and the operation still has to pass policy. Injection changes what the agent wants; it does not change what it may reach.

Escape by descendant

The agent is restricted, so it runs `bash -c`, which runs Python, which opens the socket.

Contained

The containment session is attached to the process tree. The fourth process is governed by the policy the first was given.

Lateral movement on the LAN

An agent allowed to reach an API endpoint scans 192.168.0.0/16, finds an SSH port or an internal service, and connects.

Contained

Destinations are classified from their bytes. Internet, local network, loopback and multicast are separate authority, and reaching one grants nothing about the others.

Supply chain execution

A postinstall script in an npm or pip package runs with everything the agent had, which was everything you had.

Contained

Execution targets are identified by resolved path, signing identity and hash, and inherit the session. A package manager is not a category of software with its own authority.

Token sprawl through tools

An MCP server is handed a GitHub token so the agent can read one repository. The token can now do everything the token can do, forever.

Contained

The broker performs the approved operation and returns the result. The reusable secret stays broker-owned; there is no raw-token retrieval call to find.

What good looks like

Security you can read, not a shield icon.

The failure mode of endpoint security products is a green checkmark that means nothing in particular. BitShout shows what asked, what it asked for, what was decided, and whether the operating system enforced the decision or the policy engine merely evaluated it — because those are not the same claim.

BitShout — AI Containment Protection on
Protected apps3All contained
Awaiting you2Approval requests
Denied today17Policy + OS
Evidence records842Local, hash-chained

Protected applications

CGChatGPTcom.openai.chatGuard Mode~/Projects/appRestricted
CLClaudecom.anthropic.claudeGuard Mode~/Projects/appRestricted
>_Codex CLIcom.openai.codexVault Mode~/Projects/appProxy only

Recent activity live

Claude requested to read ~/.ssh/id_ed25519Denied2m ago
Codex CLI requested network access to 192.168.1.40:22Denied5m ago
ChatGPT requested to write ~/Documents/notes.txtAllowed once12m ago
Claude used MCP tool github.read_repositoryBrokered18m ago
Codex CLI spawned bash → curl → api.github.comDenied21m ago
Claude requested Keychain item aws-prodDenied24m ago
AI agentcontainedBitShout brokertrusted servicevalidate identityvalidate capabilityvalidate resourcevalidate parametersvalidate policyCredentialbroker-ownedGitHub APIexternalcall toolresult onlyThe reusable secret never reaches the agent.
The credential problem

You cannot un-read a secret.

Most AI security incidents that will actually cost someone money start with a token handed to an agent for a good reason. Once read, it is permanent: it exists in a context window, possibly in a log, possibly in a provider's retention window, and it keeps working until someone rotates it.

The fix is structural rather than procedural. Give the agent the capability and keep the credential: the broker validates identity, capability, resource, parameters and policy, performs the one approved operation, and returns the result. There is no generic HTTP proxy, no raw token retrieval, and no "reveal secret" call in the surface at all.

MCP security in detail
The question nobody asks vendors

What does your security tool do when it breaks?

Most answer "it keeps going", because the alternative interrupts people. That means a broken enforcement component silently becomes permission — and you find out from the incident, not the dashboard.

  1. ProtectedAll boundaries proven healthy
  2. DegradedA boundary can no longer be proven
  3. LockedNew authority refused. Existing grants suspended.
  4. UnprotectedNever silently. Always stated.
  5. cannot determine → allow·cannot determine → deny
Practical

If you run agents today, do these five things.

  1. Stop giving agents long-lived credentials. Every token in an environment variable or a config file is a token the agent has permanently. Broker them, or at minimum scope and rotate them aggressively.
  2. Give each agent one workspace, not your home directory. Most agent tooling defaults to whatever directory you launched it from, which on a bad day is ~.
  3. Assume everything the agent reads is attacker-controlled. Issues, READMEs, web pages and tool output are all input. Treat instructions found in them the way you would treat instructions found in a customer email.
  4. Check what happens to descendants. Whatever restrictions you set, test whether they survive the agent spawning a shell. Very often they do not.
  5. Keep a record you did not have to trust the agent for. If your only account of what happened comes from the agent's own transcript, you have the defendant's version of events.

BitShout does all five structurally rather than asking you to remember them. See how.

FAQ

AI security, answered

What is AI security?

AI security covers three distinct layers: model safety, which governs what a model will produce; application security, which governs how an AI product behaves; and capability containment, which governs what an AI process running on a real machine can actually reach. The first two are the vendor’s responsibility and travel with the software. The third is yours, because it depends on what is on your disk, your network and your keychain.

Why is endpoint AI security different from traditional endpoint security?

Traditional endpoint security asks whether a program is malicious — by signature, reputation or behaviour. An AI agent is not malicious and its behaviour is legitimate by construction: reading files, running commands and making network calls is the job. The question that matters is not "is this program bad" but "should this program be able to reach that". That is an authority question, and authority is what containment governs.

Can antivirus or EDR protect me from an AI agent?

Not usefully, no. EDR is built to catch software doing things it should not be doing. An agent reading your SSH key is, from the operating system’s perspective, a process you started opening a file you own — indistinguishable from you doing it yourself. There is no signature for "this was a bad idea". You need a boundary that requires permission in advance, not a detector that reports afterwards.

Does BitShout stop prompt injection?

No, and any product claiming to is overselling. Prompt injection is a property of how language models process untrusted text, and it will not be solved at the endpoint. What BitShout changes is the consequence: an injected instruction still has to become a filesystem, network, execution or capability operation, and that operation still has to pass a deny-by-default policy it cannot argue with. The attack succeeds and achieves nothing.

Is my data sent anywhere for AI security analysis?

No. BitShout is local-first: policy, grants, credential references, evidence and containment decisions stay on your Mac. There is no mandatory telemetry, no automatic diagnostic upload, and no cloud analysis step. Exporting evidence is an explicit action you take, and the export is redacted.

Does BitShout use AI to make security decisions?

No, deliberately. The policy engine is deterministic, versioned, ordinary code: the same inputs produce the same verdict every time. Using a language model to decide whether another language model should be allowed to read your keys would reintroduce exactly the unpredictability the product exists to contain.