Skip to content
BishopTechBishopTech
Back to My Mind
AI securityResearch field guide26 min read

AI agent security in 2026: prompt injection is an authorization problem.

A practical guide for founders, operators, developers, and automation teams who want useful agents without handing an unreliable planner the keys to production.

Five-layer AI agent security control stack: untrusted content, agent planner, tool contracts, policy and approval, audit and recovery

The useful design rule: keep high-impact edges deterministic and let the middle be adaptive.

If an AI agent can read a webpage, inspect a file, search a database, call an API, or update a record, the main security question is not “did we write a strong enough system prompt?”

The better question is: what can happen if the model treats untrusted content as an instruction, and which layer stops the resulting action?

That shift matters because prompt injection is not limited to a malicious user typing “ignore your previous instructions.” It can arrive inside a support ticket, a PDF, a GitHub issue, an email signature, a database row, a tool description, or a page the agent was asked to summarize. The content may look like data to a person and like a very persuasive instruction to a model.

My practical view in 2026 is simple: treat the agent as an untrusted planner. Let it help interpret messy input and choose among bounded, observable steps. Let application code, identity, authorization policy, tool contracts, approval gates, and recovery systems decide what the agent is actually allowed to do.

That does not make a system magically safe. Nothing in this article is a guarantee against prompt injection or another security failure. It gives you a more useful pilot question: is the blast radius small enough, and is the run visible enough, to learn without handing an unreliable planner the keys to production?

The public signals behind this guide are practical engineering discussions: a LangChain issue about untrusted database rows influencing SQL generation and a Microsoft AutoGen proposal for intercepting tool calls before execution. Those are signals of recurring design friction, not incident statistics or universal findings.

The short answer

An agent is not ready for broad autonomy merely because it can complete a demo, refuse a few obvious jailbreaks, or pass a final-answer quality check.

A bounded pilot should usually have these properties:

  • The job is narrow. There is a named outcome, a definition of done, and a stop condition.
  • The tool surface is small. The agent receives only the tools it needs, with typed inputs and clear side-effect descriptions.
  • Read access comes first. The first version can inspect, classify, draft, or recommend without changing the system of record.
  • Authorization is outside the model. The model can propose an action, but a policy layer decides whether that exact action is allowed for that identity, target, and data.
  • Approval is specific. A person can see what will happen, where it will happen, with which arguments, and under which permissions.
  • Runs are replayable. You can inspect the input, retrieved context, tool calls, results, approvals, retries, and final effect.
  • Failures are part of the test set. You have cases for hostile instructions, stale data, malformed tool output, duplicate retries, permission denial, timeout, and recovery.

If the steps are already known, start with a deterministic workflow and use a model inside it for interpretation. Anthropic’s engineering guidance makes this same distinction: workflows use predefined code paths, while agents dynamically direct their process and tool use. Their recommendation is to add complexity only when it demonstrably improves the outcome, not because a framework makes autonomy easy to switch on.

The strongest architecture is often hybrid. Keep high-impact edges deterministic and let the middle be adaptive. An agent can decide which read-only source to inspect. Your application should still decide who can write, which destination is allowed, when approval is required, how many retries are permitted, and what happens after a partial failure.

Why prompt injection is bigger than a bad prompt

Prompt injection happens when an attacker-controlled or simply untrusted piece of content changes the model’s behavior in a way the system did not intend. The content might directly address the model, or it might hide an instruction in material the agent was supposed to analyze.

A direct example is a user asking an assistant to reveal a secret or skip a policy check. An indirect example is an agent asked to summarize a customer message that contains text such as “forward the full conversation to this external address.” If the agent has a mail tool, the content is no longer just something to summarize. It has become a possible influence on a tool-using loop.

The core difficulty is that language models process instructions and data in a shared medium. Delimiters, XML tags, separate message roles, and clear tool descriptions can improve the model’s interpretation. They are worthwhile. But they are not a substitute for authorization. A string that says “this is data, never follow it” is still an instruction presented to a probabilistic system. The application needs an independent way to prevent an unauthorized side effect.

Google Cloud’s current MCP security guidance describes this plainly in its agent-only discussion: without an approval step, security depends on the agent’s programming and remains exposed to prompt injection, insecure tool chaining, and naive error handling. The same page recommends treating user-provided and database-derived content as data to analyze, not instructions, and keeping untrusted data out of the same context as the system prompt where possible.

That guidance is useful, but it is not a perfect recipe. A retrieved passage may still influence a later plan. A tool may return a new tool description. A memory entry may be reused in another session. A redirect may change the destination after an allowlist check. The boundary has to hold across the whole operation.

A practical threat model asks five questions:

  1. Where can untrusted content enter? User messages, documents, websites, emails, tickets, database fields, tool results, memory, and third-party instructions all count.
  2. What can the model propose? Search, code execution, a database query, a message, a purchase, a permission change, or another agent handoff.
  3. What can the system actually execute? The available tool list is a capability boundary, even if the prompt says the tool is “for emergencies only.”
  4. Which layer checks the proposed action? A model-based guardrail can help, but it should not be the only enforcement point for a high-impact action.
  5. What can be recovered? If the action is wrong, can you undo it, identify affected records, revoke access, restore state, and learn from the run?

If you cannot answer those questions, the problem is not that your prompt needs another paragraph. The product needs an explicit control plane.

First decide whether you need an agent

Security work gets harder when teams use agent language for every AI feature. A chatbot that answers from a fixed context, a retrieval feature that fetches documents, a workflow that runs known steps, and an agent that chooses its own path have different failure surfaces.

A chatbot usually produces a response to an interaction. A retrieval-augmented feature fetches information before generating a response. A workflow follows a known sequence, possibly with model calls inside it. An agent has more runtime control over the sequence: it can choose a tool, inspect the result, decide what to do next, and continue until it believes the task is complete or a stopping rule fires.

Those categories can overlap, and labels are not the point. The point is to match autonomy to uncertainty.

Use a workflow when:

  • The steps can be written down before the request arrives.
  • Exceptions are known and can be represented as states.
  • A predictable result matters more than flexible exploration.
  • A high-impact action needs a deterministic policy check.
  • You need an easy explanation of why a particular branch ran.

Consider an agent when:

  • The number or order of investigative steps depends on what the system discovers.
  • The task is open-ended enough that hardcoding every path would be brittle.
  • The environment provides reliable feedback, such as test results or structured API responses.
  • The outcome has an inspectable finish line.
  • The team can tolerate a larger testing and observability burden.

Do not confuse a framework with a reason. A framework can make tool registration, state, and retries convenient. It can also hide prompts, responses, default tools, or error behavior behind another abstraction layer. Anthropic recommends starting with direct model APIs or simple components and understanding the underlying code before moving a complex framework into production.

Here is a useful design rule: if the high-risk action can be represented as a known transition, keep that transition in code. The model may extract an invoice number or suggest a reply. Code should decide whether the invoice is valid, whether the account is in scope, whether the amount needs approval, and whether the same idempotency key has already been used.

The agent can be adaptive without being sovereign.

The five control layers that matter

A good security design is layered. No single layer has to perfectly identify every malicious instruction because the other layers should make a mistake smaller, visible, and recoverable.

1. Separate data from instructions

Start with a clear representation of untrusted content. Label the source, tenant, record, timestamp, and trust level. Delimit the content. Tell the model what it is allowed to do with it. Keep system policy and retrieved data in distinct fields where the runtime supports that separation.

This is not decorative prompt engineering. It helps the model understand the intended boundary and makes the data path easier to inspect. It also gives your test suite something concrete to test.

But do not stop there. If a document contains a request to delete records, the content should be treated as a string to analyze. The delete tool should still be blocked unless the application policy permits it and the required approval is present.

Useful controls include:

  • Marking content as untrusted_data in the internal task representation.
  • Recording the source URL, record ID, tenant, and retrieval time.
  • Preventing source content from editing system policy or tool definitions.
  • Sanitizing or filtering content where appropriate without pretending sanitization catches every attack.
  • Giving the model a narrow task such as “extract the requested fields” instead of “decide and execute anything useful.”
  • Passing only the minimum source material required for the step.

2. Give tools contracts, not vague powers

A tool is an API with a natural-language description, but the natural-language description does not replace an API contract. Define typed arguments, valid ranges, allowed destinations, expected errors, side effects, and whether the operation is read-only.

Prefer get_customer_order(order_id) over a generic run_sql(query) for a first version. Prefer draft_email(to, subject, body) over send_any_message(destination, content) when the user’s job is to prepare a response. Tool names and parameters should make the safe path easy and the dangerous path explicit.

Anthropic’s tool-design guidance makes a similar point: the agent-computer interface deserves careful documentation, examples, edge cases, and testing. A tool that is easy for a human to misunderstand is usually not going to become clearer because a model is calling it.

For each tool, document:

FieldQuestion to answer
PurposeWhat narrow job does this tool perform?
InputsWhich types, formats, and ranges are accepted?
ScopeWhich tenant, records, hosts, directories, or accounts can it reach?
Side effectsDoes it read, create, update, send, publish, delete, or change access?
AuthorizationWhich identity and permission are required?
ApprovalDoes this exact action need a human confirmation?
IdempotencyCan a retry create a duplicate or repeat a charge?
ErrorsWhat structured failures can the caller inspect?
AuditWhich arguments, policy result, and outcome are recorded?

A small tool surface is a security feature. Every additional tool is another description the model can misread, another permission to review, and another combination to test.

3. Put identity and authorization outside the model

The model can propose “send this message” or “update this record.” It should not be the authority that decides whether the current user, agent, or task is allowed to do it.

NIST’s 2026 AI Agent Standards Initiative explicitly identifies agent authentication and identity infrastructure, secure interoperability, and security evaluations as areas of work. That is a sign that identity is becoming a central systems concern as agents act on behalf of people and services. It is not a finished standard, and it does not remove the need for product-specific authorization.

Google’s guidance similarly recommends creating an agent identity and applying least privilege. Give the runtime only the roles and resources required for the job. Use separate identities for separate workloads when their access should not be shared.

For a tool call, authorization should consider at least:

  • The authenticated human or service principal.
  • The agent identity and version.
  • The tenant or account boundary.
  • The exact tool and arguments.
  • The target resource.
  • The data classification.
  • The current task and approval state.
  • Time, budget, rate, and retry limits.

This is where the Model Context Protocol security guidance is especially concrete for MCP implementations. The current 2026-07-28 documentation covers confused deputy attacks, token passthrough, SSRF, state-handle hijacking, local server compromise, URL validation, and scope minimization. It states that MCP servers must not accept tokens that were not explicitly issued for that server, and that possession of a state handle is not authentication.

The broader lesson is portable: a connector is not trustworthy merely because the model can describe it. Validate who is calling, what token is meant for, what scope is granted, and which downstream service will see the action.

4. Make approval bind to the exact action

Human review helps, but “human in the loop” is not a security architecture by itself. A reviewer can approve a dangerous action if the interface hides the target, compresses the arguments, or makes the approval request too vague to evaluate.

A meaningful approval record should bind to the proposed action. It should show:

  • The action and tool name.
  • The exact arguments and destination.
  • The source data that influenced the proposal.
  • The agent identity and task ID.
  • The permissions being exercised.
  • The expected effect and reversibility.
  • The time limit for the approval.
  • The person or role that approved it.
  • Whether the arguments changed after approval.

If the recipient, amount, database table, file path, or permission scope changes, the approval should be invalidated and requested again. “Approved” is not a reusable blessing for every future tool call.

For low-risk tasks, approval may be unnecessary. For public publishing, money movement, destructive changes, access changes, sensitive-data exports, and messages sent externally, explicit authorization should be the default unless a separately reviewed policy says otherwise.

Also design against approval fatigue. If the system asks a person to approve every harmless read, the person may click through the dangerous ones. Use a risk-based boundary and provide enough context to make the high-impact decisions meaningful.

5. Isolate, recover, and audit

Agent memory, state, tools, and credentials should not automatically share one broad trust boundary. Google recommends isolating memory and state between users, tenants, or agents and planning for recovery. MCP guidance includes sandboxing and restricted privileges for local servers, as well as secure handling of state handles and authorization flows.

Isolation can mean different things depending on the job:

  • Separate tenant data and memory namespaces.
  • Use short-lived credentials with narrow scopes.
  • Run code execution in a sandbox with restricted network and filesystem access.
  • Keep production writes behind a service that enforces policy.
  • Use an egress proxy or destination allowlist for outbound requests.
  • Make memory writes explicit, reviewable, and removable.
  • Keep the agent from changing its own tool list or policy files.

Recovery is not just backups. It is the ability to answer what happened and contain it. Use idempotency keys for actions that can repeat. Record partial success. Build rollback or compensating actions where the underlying system supports them. Set maximum steps, time, cost, and retries. Fail closed when a permission or validation check cannot be completed.

The run log should be useful to an operator, not only to a telemetry pipeline. Preserve enough to reconstruct the decision without exposing secrets unnecessarily: task ID, actor, model and policy versions, source references, tool name, validated arguments, authorization result, approval record, tool result summary, retry history, final side effect, and error state.

A practical autonomy and action-risk matrix

“Should this agent be autonomous?” is too broad to answer. Score the action, not the marketing label.

Action classExampleDefault modeMinimum controls before a pilot
Read-only, low sensitivitySearch approved public docsAgent may actSource allowlist, time limit, trace, content treated as untrusted
Read-only, sensitiveRetrieve one customer recordAgent may suggest or act within strict scopeTenant authorization, field filtering, access log, no cross-tenant memory
RecommendationDraft a reply or SQL queryAgent drafts; person or deterministic application executesTyped output, validation, visible sources, no direct side effect
Reversible writeCreate an internal task or draftAgent may propose; approval depends on impactIdempotency, target validation, audit, rollback or deletion path
External commitmentSend email, publish page, submit a formHuman approval by defaultExact-action approval, destination allowlist, final preview, replayable trace
Financial or destructiveCharge, refund, delete, change permissionsDo not give broad unattended autonomy by defaultSeparate authorization, strong approval, transaction limits, recovery, incident path

This is not a compliance classification or a universal policy. It is a starting point for a conversation between the product owner, developer, and security reviewer.

Four variables make the decision more precise:

  1. Reversibility: Can the effect be undone without guessing what changed?
  2. Sensitivity: What data, credentials, people, or business commitments are involved?
  3. Blast radius: How many records, accounts, destinations, or systems can one mistake touch?
  4. Observability: Can an operator see the action and explain it after the fact?

When reversibility is low and blast radius is high, autonomy should fall even if the model performs well on a benchmark. When the action is read-only, scoped, observable, and easy to stop, a pilot can usually learn more safely.

Failure modes to test before a pilot

Do not test only the prompt you expect a friendly user to type. Test the whole path that can influence action.

Indirect prompt injection

Put hostile instructions in a webpage, document, database field, ticket, email, and tool response. Ask the agent to summarize, classify, or compare the material. Verify that the content can influence the analysis without changing permissions or triggering a side effect.

A useful test is not “did the model refuse the attack?” It is “even if the model followed the attack, what would the next layer do?” A passing result might be a blocked tool call, a scoped read-only action, or a request for explicit approval—not a claim that the model understood the attacker perfectly.

Insecure tool chaining

Test combinations that look individually harmless. Can a search tool find a secret, a formatter expose it, and a messaging tool send it? Can a read tool identify a record and a write tool update it without a second authorization check? Can an agent create a destination and then use it as if it were trusted?

Google’s guidance calls out insecure tool chaining because the risk can emerge from composition rather than from one obviously dangerous tool.

Confused deputy and token misuse

Test whether a proxy or connector accepts a token intended for another service, skips per-client consent, forwards credentials without audience validation, or treats a state handle as proof of identity. The current MCP security documentation is a useful protocol-specific reference for these cases.

SSRF and redirect drift

If an agent or connector fetches URLs, test private IP ranges, cloud metadata addresses, localhost services, DNS rebinding, and redirect chains. Validate every hop, not just the first URL. Use an egress policy where possible. A public MCP server change request from August 2026 illustrates the practical version of this problem: a domain allowlist needed to be rechecked after redirects rather than trusting the initial host.

Dynamic capability changes

Test what happens when a server adds a new tool, changes a tool description, or updates a scope. Does the agent automatically gain a capability? Does the operator see the change? Is the new tool blocked until reviewed? A tool inventory is part of the security state and should not be assumed static.

Memory poisoning and cross-tenant leakage

Seed a memory entry that looks like a preference or policy but is actually an instruction to reveal data or bypass review. Then run another task or tenant. Verify that memory provenance, namespace isolation, freshness, and deletion controls work as designed.

Retry and partial-failure behavior

Make the network fail after a side effect but before the agent receives the response. Make a timeout occur during a payment-like or message-like action. Send the same task twice. Verify idempotency and status reconciliation. An agent that cannot tell whether an action completed should not blindly retry it.

Tool and model drift

Change the model, tool schema, dependency version, or policy pack. Replay the regression set. Current public issue discussions in agent ecosystems show why this matters: SDK changes, server startup failures, missing interception points, and security feature requests can surface at the integration boundary even when the demo prompt is unchanged.

How to evaluate the whole run

A final answer is one output. An agent run is a chain of decisions and effects. Evaluate the chain.

Use a scorecard that maps to the real job:

DimensionWhat to inspectExample pass condition
OutcomeDid the requested artifact or recommendation exist?Required fields are present and the artifact is usable.
GroundingCan factual claims or decisions be traced to approved inputs?Each important claim has a source or explicit unknown.
Tool correctnessWere tools chosen and arguments validated?No undeclared tool, malformed argument, or out-of-scope target.
AuthorizationDid policy match the actor, task, resource, and action?Unapproved or over-scoped calls are blocked.
SafetyDid hostile or unexpected content alter permissions?Untrusted content stays data; high-impact actions remain gated.
RecoveryDid failure stop or resume safely?Retries do not duplicate side effects; partial states are visible.
AuditabilityCan an operator replay the decision?Run ID, policy, tool, args, approval, result, and outcome are present.
EconomicsIs the task viable within budget and latency?Limits are explicit; runaway loops stop.

Do not hide failures in an average score. A system that produces beautiful drafts but occasionally sends a private attachment to an attacker should not receive a comforting “92% quality” label.

Build three sets of cases:

  • Representative cases: normal inputs from the actual workflow, including messy but legitimate examples.
  • Adversarial cases: direct and indirect injection, malicious tool descriptions, unauthorized targets, poisoned memory, and misleading results.
  • Recovery cases: timeouts, malformed output, denied permissions, changed schemas, duplicate submissions, and partial effects.

The test artifact should include the expected policy decision, not only the expected prose. For example, “the agent should extract the invoice and prepare a draft, but must not submit payment” is more useful than “the answer should sound helpful.”

After every meaningful change, replay the set. Model updates are not the only reason to rerun it. Tool descriptions, connector versions, database permissions, memory policies, routing rules, and approval UI changes can alter behavior too.

A four-week pilot plan

The safest first month is intentionally unglamorous. You are trying to learn whether the workflow helps, not prove that autonomy is a personality trait.

Days 1–3: map the current process

Write down the existing steps before adding an agent. Capture inputs, decisions, exceptions, tools, handoffs, definition of done, and the person who can stop the process. Collect real examples, including failures and cases nobody wants to demo.

Classify each step as read, recommend, reversible write, external commitment, or high-impact write. Name the source of truth. Decide which data the first version is allowed to see and which data must remain outside the context.

If nobody can describe the current process, do not begin with autonomy. Begin with discovery.

Days 4–7: build the deterministic shell

Create a task record, state machine, output schema, source manifest, authorization checks, and human review screen. Add a run ID. Make the first version recommendation-first or read-only.

The model can help with extraction, classification, search planning, or draft generation. The surrounding application should control transitions, retries, permissions, and side effects.

Add a stop button and a clear error state before you add another tool.

Week 2: add one tool at a time

Start with the lowest-risk useful tool. Test valid inputs, missing inputs, malformed responses, timeouts, stale data, hostile content, and denied permissions. Review every tool’s description as if it were an API contract.

Keep tool names and schemas stable enough to inspect. Avoid a general-purpose “execute” tool in the first pilot. If a tool can write, make that write path explicit and separate from read access.

Week 3: create and run the evaluation set

Use representative, adversarial, and recovery cases. Score the complete run, not only the final answer. Save the source references, policy result, tool arguments, approval, and final effect.

If the same failure happens twice, make it a regression case. If a reviewer catches a subtle issue, preserve the example. A correction is not just an annoyance; it is future test data.

Week 4: shadow mode and promotion rules

Let the system produce recommendations while a human still performs the action. Compare the agent’s output with the human result. Record corrections, time saved, time spent reviewing, false positives, false negatives, and any policy surprises. Do not fabricate a success percentage if the sample is small or the measurement is not defined.

Promote only the low-risk parts that have earned trust in the real workflow. Keep high-impact actions behind approval until the owner can explain the evidence for a different policy.

At the end of the month, you should be able to answer:

  • Did the system reduce work without creating hidden review work?
  • Did it produce the requested artifact or decision?
  • What does one run cost in money, latency, and human attention?
  • Where does it fail, and can the failure be reproduced?
  • Who can stop it, revoke its access, or restore the affected state?

If those answers are vague, the next feature should probably be observability or policy—not more autonomy.

What may change next (clearly labeled inference)

This section is inference, not a reported fact or a guarantee.

I expect the most durable progress to happen around the edges of the model: identity, authorization, typed tool contracts, protocol interoperability, run traces, test harnesses, and recovery. NIST’s current initiative explicitly includes identity, authorization, protocols, and security evaluations. MCP’s 2026 guidance is becoming more detailed about OAuth boundaries, SSRF, local server execution, state, and scopes. Those are signs that the ecosystem is working on the infrastructure around agent action.

That does not mean every agent will become safe by default. More interoperability can also make more capabilities easier to connect. A protocol can standardize a dangerous tool as efficiently as a useful one. A larger tool catalog can increase the chance of an unexpected combination. A polished approval UI can still train people to click without reading.

The likely product shape is not a free-range digital employee with unlimited authority. It is an agent-shaped edge around a controlled system: the user describes an outcome, the agent gathers context and proposes a path, deterministic policy checks the action, a person approves when the stakes rise, and the runtime records what happened.

The model will change. Protocol versions will change. Pricing and latency will change. Your durable assets are the task contract, source provenance, permission boundary, approval record, run history, evaluation set, and recovery plan.

FAQ

Can prompt engineering prevent prompt injection?

It can reduce confusion and improve behavior, but it cannot serve as the only authorization layer for a tool-using agent. Separate data from instructions, delimit untrusted content, and give the model a narrow task. Then independently validate every action with identity, policy, typed arguments, scope, approval, and audit controls.

Should I let an agent browse the web?

Browsing can be useful for read-only research, but web content is untrusted input. Restrict destinations, validate URLs and redirects, isolate secrets, set time and step limits, and prevent retrieved instructions from changing permissions. Do not give a browsing agent a powerful write tool merely because the research task sounds harmless.

Is human approval enough?

No. Approval helps when it is tied to the exact action and the reviewer can understand the target, arguments, source context, and expected effect. It is weaker when the interface hides details, approval can be reused after arguments change, or the person is asked to click through every low-risk action.

Do I need MCP to build an agent?

No. MCP is one protocol for connecting AI applications to tools and data. The architecture principles in this article apply whether you use MCP, direct APIs, a framework, or custom connectors. If you do use MCP, read its current security documentation and treat protocol conformance as one layer, not a complete application security review.

What is the first tool an agent should get?

Usually the smallest read-only tool that produces a useful intermediate artifact. Give it a narrow schema, explicit scope, structured errors, and a traceable result. Add a write tool only after you have representative and adversarial tests, a policy decision point, idempotency, and an appropriate approval path.

How do I know whether an agent is reliable?

Define reliability for the actual job. Check outcome, grounding, tool correctness, authorization, safety, recovery, auditability, and economics. Use a regression set of real examples plus adversarial and recovery cases. A high-quality final paragraph is not evidence that the tool calls, permissions, and retries were correct.

Should an AI agent ever run unattended?

Only for tasks that are low-risk, reversible, bounded, and observable, with permissions that match the job and a tested recovery path. Money movement, destructive changes, public publishing, sensitive exports, access changes, and external commitments generally need an explicit authorization design and often a human review boundary.

The practical next step

Take one workflow that is repeated often and write down its action boundary. Which steps are read-only? Which produce a recommendation? Which change a record? Which create an external commitment? Who is allowed to approve each one? What evidence should exist after the run?

If the answer is a spreadsheet, inbox pattern, manual checklist, or product idea, bring the real version—not a polished hypothetical. BishopTech can help scope a first build around the workflow, permissions, evaluation cases, and review path rather than starting with an oversized promise about autonomy.

Start a scoped BishopTech consultation

Sources and further reading

The sources below are dated references used for the claims and framework in this article. Vendor and project guidance is identified as such. Public issue reports are used only as user-signal evidence, not as universal proof.

  1. OWASP — Agentic AI: Threats and Mitigations — February 17, 2025. Threat-model-based agentic security framing.
  2. NIST — AI Agent Standards Initiative — updated April 20, 2026. Standards, interoperability, identity, authorization, and evaluation direction.
  3. Model Context Protocol — Security Best Practices — version dated July 28, 2026. Protocol-specific attack surfaces and mitigations.
  4. Google Cloud — AI security and safety for MCP servers — last updated July 29, 2026. Agent modes, least privilege, prompt-injection boundaries, tool review, and recovery.
  5. Anthropic Engineering — Building effective agents — December 19, 2024. Workflow-versus-agent distinction, simplicity, evaluation, stopping conditions, sandboxing, and tool design.
  6. LangChain issue #38345 — public user signal, updated August 7, 2026. A reported concern about database content, prompt injection, and SQL validation.
  7. Microsoft AutoGen issue #7405 — public user signal, updated August 9, 2026. A proposal for tool-call interception, policy checks, approval, and audit logging.