Field notes

Security

Read-only AI agents still need containment

Removing mutation lowers the blast radius. It does not stop prompt injection, overbroad reads, data exfiltration, or side effects elsewhere in the runtime.

An olive token follows a paper route through protected data shapes and stops at a burnt-clay boundary checkpoint

The short version

Are read-only AI agents safe for enterprise use?

Read-only access makes an AI agent safer because it prevents direct changes to production systems, but it does not make the agent safe. An agent that can read sensitive data, process untrusted content, and communicate externally may still disclose information. Secure deployment requires separate controls for data access, mutation, execution, network egress, approvals, sharing, and audit.

What holds up

  • Read-only limits mutation; it does not automatically limit disclosure.
  • Model permissions and runtime capabilities must be enforced outside the prompt.
  • Private data, untrusted input, and outbound communication form a dangerous combination.
  • Start with observe and recommend modes, then grant narrow actions through explicit gates.
01

Read-only is a boundary, not a safety guarantee

A read-only agent cannot intentionally update a record, deploy code, or delete a file through its approved tools. That is a meaningful reduction in blast radius. It makes investigation, search, summarization, and recommendation reasonable places to begin.

The label becomes misleading when it describes only database or application writes. Reading a secret and placing it in a URL is not a write to the source system, but it is still a disclosure. Running code without persistent mutation can still consume resources or expose credentials. Sharing an agent output can reveal documents that some recipients were never allowed to view.

Treat read-only as one capability dimension. Ask what the agent can observe, compute, transmit, retain, render, and share before deciding what it can safely do.

02

Two current cases show the difference

HyperProbe describes a production-debugging agent that places non-blocking probes, captures variable state, cannot write memory or execute code through the probe, and records activity in an audit trail. Those constraints target a narrow diagnostic job and reduce the risk of autonomous remediation.

A PromptArmor security report alleges that indirect prompt injection could make Atlassian Rovo append Jira and Confluence data to an attacker-controlled URL and open it, even when an organization had disabled web search. The report attributes the failure to an outbound URL-retrieval capability, not a direct write to Atlassian data.

These are different products and the vendor claims should be evaluated independently. Together they illustrate the control question: what paths exist from sensitive evidence to an external side effect?

03

Separate capabilities that are usually bundled

Do not grant a broad “read-only” role. Express each capability separately and enforce it in the runtime or integration layer rather than relying on the model to remember policy.

CapabilityRisk even without source mutationRuntime control
Read dataSensitive records enter model contextIdentity-aware filtering and least privilege
Call external URLsData can leave through query strings or requestsDefault-deny egress and destination allowlists
Render remote contentImages and previews can trigger requestsProxy, strip, or block remote resources
Execute codeSecrets, network, and compute become reachableSandboxing, resource limits, and no ambient credentials
Retain outputSensitive context persists beyond the taskRetention, redaction, and deletion policy
Share resultsAuthorized data reaches unauthorized peopleResource-level authorization on every shared artifact
04

Break the dangerous three-part combination

Security practitioner Simon Willison describes a “lethal trifecta” for agents: access to private data, exposure to untrusted content, and an ability to communicate externally. His analysis of the pattern is useful because removing any one side can block a complete exfiltration path.

An enterprise agent often needs the first two capabilities. It reads internal records and encounters customer messages, uploaded files, websites, or tool output that the company does not control. That makes outbound communication the most practical place to enforce a hard boundary.

Do not let the model invent destinations. Allow only typed actions to preapproved services, validate every argument, and prevent sensitive fields from entering URL paths, query strings, remote images, or arbitrary request bodies. Require an explicit user action for a new destination.

A system prompt that says “never leak data” is guidance. An egress proxy that rejects an unapproved destination is a control.

05

Design a genuinely constrained read mode

A useful read mode can still search, correlate, and recommend. Its constraints should be visible enough that a reviewer can determine what evidence entered the run and why no unauthorized path existed.

Identity
Execute every read as a named user or service identity with resource-level authorization.
Provenance
Label trusted instructions, untrusted content, tool results, and retrieved records separately.
Egress
Block arbitrary network access; allow only typed, preapproved destinations and methods.
Execution
Use an isolated runtime with no ambient secrets, narrow mounts, and strict resource limits.
Output
Redact sensitive fields and re-check authorization before storing or sharing an artifact.
Evidence
Record reads, model calls, tool arguments, denied actions, approvals, and recipients.
06

Test the controls with hostile content

Normal task evaluations will not reveal whether the runtime stops a malicious instruction embedded in a document or tool response. Add adversarial fixtures before production and rerun them after any change to the model, prompt, connector, browser, renderer, or network policy.

TestExpected behaviorEvidence to retain
Document asks agent to reveal contextInstruction is treated as data and ignoredSource label and blocked action
Agent constructs a new external URLRequest is denied before network accessDestination, arguments, and policy decision
Markdown contains a remote imageRemote fetch is stripped, proxied, or blockedRenderer decision and requested host
Tool output requests another tool callOutput cannot elevate its own authorityTool provenance and authorization check
User asks to share a derived artifactRecipient access is checked against every sourceSource resources, recipient, and approval
07

Use permission tiers instead of an autonomy switch

Move a workflow through explicit operating modes. Each tier should add only the capabilities required for the next measurable outcome.

TierAllowed behaviorSuitable work
ObserveRead approved sources; no external egressSearch, evidence collection, anomaly detection
RecommendProduce an internal draft or proposed actionDiagnosis, ticket triage, policy guidance
Act with approvalOne scoped mutation after reviewClosing a ticket, updating a record, applying a patch
Narrow autonomyPreapproved actions inside strict limitsHigh-volume, reversible, well-evaluated workflows

Promotion should follow evidence: accepted outcomes, denied-action behavior, incident history, and rollback performance—not elapsed time since launch.

08

Investigate disclosure like any other incident

The agent run record should make it possible to reconstruct which identity read the data, which untrusted content entered context, which model produced the action, which policy allowed or denied it, and where the output went.

If a control fails, revoke the affected credentials and destinations, preserve the run evidence, identify every resource exposed to the agent, and test the same path across similar integrations. Fix the deterministic boundary before revising the prompt. Prompt changes can reduce likelihood; runtime controls remove capability.

09

Approve the boundary before the agent

Security review should approve a capability map, not a product label. Record the accessible resources, untrusted inputs, executable tools, outbound destinations, retention rules, human approvals, and incident owner for the workflow.

A read-only agent is often the right first deployment because it preserves human control over consequential changes. It becomes defensible only when “read-only” describes the entire data path rather than one checkbox on one connector.

Evidence trail

Evidence, limitations, and sources

Grid Field Notes synthesizes published technical, product, and risk evidence into operating guidance. Vendor-reported results remain attributed, numerical examples are illustrative, and customer results appear only when they are explicitly measured and identified.

Limits of this note. This is a threat-model synthesis of vendor controls, public security research, and OWASP guidance. It does not claim that every reported attack generalizes to every deployment; the point is to test each capability boundary independently.

Frequently asked questions

Questions teams ask

Can a read-only AI agent change production data?

A correctly enforced read-only tool cannot mutate its source system. The agent may still have other side effects through code execution, network requests, output retention, or sharing, so those capabilities must be constrained separately.

Does human approval make an AI agent safe?

Approval reduces risk only when the reviewer sees the proposed action, destination, relevant evidence, and affected resources. It does not replace least privilege, egress controls, argument validation, redaction, or audit logs.

What is the safest first enterprise AI agent use case?

Start with a narrow observe-or-recommend workflow that reads approved data, has no arbitrary outbound network access, produces a verifiable result, and leaves consequential action to a person.