Guardrails for AI agents that call tools

Agents that call tools can change records, send messages and move money when a prompt goes wrong. This page shows how to bound those actions in your own infrastructure, which open-source platforms fit, and what to ask a partner before building.

On this page

Why AI agent guardrails for tool calls need their own design

Bound each tool call with execution rails, allowlists, human approval and scoped credentials, and enforce those limits outside the model where every action is logged. Once an agent can call internal APIs, query databases or start workflows, the risk changes shape. A bad prompt no longer produces only bad text. It can produce a refund, a record update, a password reset or a message sent to a customer. Filtering the words going in and out of the model does not cover that. The control has to sit on the action itself, because a model that is manipulated into proposing a harmful call will still propose it after an input filter passes the prompt. On the platform side, the short answer is a layered design. NeMo Guardrails provides execution rails for custom actions and tools inside the agent path, and its rail types cover input, dialog, retrieval and output checks as well. An AI gateway such as LiteLLM or Apache APISIX is the enforcement and routing point, because it sits between the agent and the model providers and can hold keys, budgets and policy. Langfuse records action traces so reviewers can see what the agent attempted. Guardrails AI validators can check tool arguments, such as regex patterns or structured fields, before a call runs. Each layer has a different job, and none should be treated as the sole control. The design decision to make early is where enforcement lives. Rails written in Colang and running in the agent process are easy to change, but a compromised or misconfigured agent can bypass them if the tool itself accepts any credential the agent holds. Ask each team to confirm three things in their own environment: that every tool runs under its own narrowly scoped credential, that high-impact actions route to a human approver through a path the agent cannot edit, and that every attempted call, including blocked ones, is written to storage the agent cannot modify. Those checks define whether the guardrails hold when a prompt goes wrong.

Which requirements shape the agent tool-call design

This table links each requirement to the build decision it forces on an agent that calls tools, with the source behind it. Read the first column as the obligation or capability, and the last column as the design work it creates. The main takeaway is that logging, per-tool scoping and a defined approval path are needed whether or not any regulation applies, and the EU AI Act duties apply only if the system is classed as high-risk, which counsel must confirm.

RequirementSourceWhat it means for the build
Automatic event logs over the system lifetimeEU AI Act Article 12(1), if the system is high-riskRecord every tool invocation with inputs, outputs, timestamps and the agent identity, so events are captured automatically rather than on request
Log retention of at least six monthsEU AI Act Article 19(1), unless other law sets a different periodRoute tool-call logs to storage with a retention policy that covers at least six months, and confirm longer periods with counsel and sector rules
Execution rails for custom actions and toolsNeMo Guardrails rail typesPut a check between the model's chosen tool call and its execution, so arguments are validated against policy before any action runs
Data retention policies and audit logsLangfuse enterprise features on self-hosted deploymentsPlan for an enterprise license key if you need retention controls and audit logs in Langfuse, and confirm the license terms before selecting it
Per-tool allowlistsDesign requirement derived from the execution railDefine which tools and which argument values each agent may use, and deny by default for any tool not listed
Separate read and write toolsDesign requirement for least privilegeClassify each tool as read or write, and require stricter checks, scoped credentials or approval for every write or external-send tool
Stated approval path for risky actionsDesign requirement for human oversightName the approvers, the actions that need sign-off, the timeout behavior and where approval decisions are logged
Scoped credentials per toolDesign requirement for least privilegeIssue each tool its own short-lived credential with only the permissions it needs, so a manipulated agent cannot reuse broader access

How each agent failure mode maps to a control

A prompt injection succeeds when text in a user message, email, web page or retrieved document persuades the model to call a tool it was not meant to use for that request. Input rails can flag suspicious instructions, but they cannot be the only defense, because injected text can be encoded or phrased in ways detection misses. The stronger position is an execution rail that sits between the model's proposed tool call and the tool itself, checking that the requested action belongs to the current task and the user's permissions before anything runs.

  • Execution rail on the tool router: NeMo Guardrails supports execution rails for custom actions and tools, so a check can run on every proposed call before the action executes.
  • Tool allowlist per task: Each workflow exposes only the tools it needs, so an injected request for an unrelated tool has no route to execute.
  • Provenance tagging: Record whether the instruction that led to the call came from the user, a system prompt or retrieved content, and block consequential calls that trace back to untrusted content.
  • Blocked-call logging: Log the proposed call, the rail decision and the input that triggered it, so the security team can tune rules from real attempts.

Evidence to request: a test set of injected instructions run against each tool, with the expected block or allow result and the logged decision for every case. Confirm which rails your chosen framework supports for tool calls in your own environment.

Which open-source platforms fit agent tool-call controls and why

An agent's tool calls are where a prompt failure becomes an action, so the controls sit at the point where the model asks to act. The platforms below each cover one job: checking the tool call itself, checking the arguments, enforcing limits at a gateway, approving risky actions and recording what happened. Most deployments combine two or three of them, and the license and support terms of each should be confirmed before the design is fixed.

NeMo Guardrails as the decision point

NeMo Guardrails is the component to evaluate first for this job because it defines execution rails, which run around custom actions and tools the agent is allowed to call. Rails are written in Colang and configured through a config.yml file, with optional Python actions. Colang 1.0 is the default, and NVIDIA's migration to 2.x uses the nemoguardrails convert tool, but converted configurations still need manual review. Confirm that the rail logic your team writes is testable against your own tool set before adopting it.

Guardrails AI for argument checks

Guardrails AI is built from validators published on Guardrails Hub, which can be chained to check values before a tool runs. Typical checks include regex matching for identifiers, format checks on amounts and dates, and custom validators your team writes for business rules. It also produces structured output that matches Pydantic models, which helps when a tool expects a fixed schema. Check which validators you need are on the Hub, and who maintains each one before depending on it.

LiteLLM for gateway guardrails and logs

LiteLLM sits between the agent and model providers, so it can enforce guardrails, budgets and key rules on every model call the agent makes, and log those calls centrally. It is MIT licensed except for its enterprise directory, so confirm which features your deployment needs fall outside that directory. The gateway sees model traffic but not the downstream tool execution, so it complements, rather than replaces, controls on the tools themselves. Verify how it handles tool-call messages in your agent framework.

Apache APISIX or Kong for tool access

When agents call internal APIs, an API gateway can enforce which routes, methods and rate limits each agent identity may use, independent of the model. Apache APISIX and Kong Gateway are both Apache-2.0 licensed and offer AI gateway capabilities, so either can front the tool endpoints. Confirm that the AI-specific plugins you rely on are available in the edition you choose, since capability differs by release. Scope each agent to its own consumer credentials so a compromised agent cannot reuse another tool's access.

Langfuse for a record of each action

Langfuse records traces of each model call and tool step, so a reviewer can reconstruct what an agent requested and what the guard decided. The core features are MIT licensed except the ee directories, and the source of the core is the same as the hosted product. Audit logs and data retention policies need an Enterprise license key on self-hosted deployments, so confirm whether your evidence requirements depend on those features. Its self-hosted stack includes PostgreSQL, ClickHouse and object storage, which should be sized with the traces you expect.

Node-RED, n8n or Flowable for approvals

Human approval for risky actions needs a workflow that pauses the agent, notifies a reviewer and resumes or stops the action based on the answer. Node-RED is Apache-2.0 licensed, while n8n uses the Sustainable Use License, with .ee files requiring an n8n Enterprise License. Flowable is Apache-2.0 licensed, whereas Camunda 8 source code under the Camunda License 1.0 is limited to non-production environments without a commercial license. Confirm the license fit for the production environment before choosing any of these for approval routing.

Where the rails, credentials and logs sit in your infrastructure

An agent that calls tools is only as safe as the components around the model. The cards below cover the parts that have to sit in your infrastructure, and the boundary each one enforces, so the model never holds the final say over an action.

Agent runtime outside the model

The agent runtime plans steps and proposes tool calls, but it should not execute them directly. Treat the model's output as a request, not a command, and route every proposed call through the rails service before anything runs. Confirm that your runtime, whether it is a framework you host or a workflow tool, exposes a hook where a tool call can be intercepted, held, or rejected before the tool API receives it.

Rails service as the execution gate

NeMo Guardrails can run as a Python library inside your service or as a guardrails server that loads configurations from a folder and exposes an HTTP API. Execution rails on custom actions and tools are where allowlists and argument checks belong. Ask the implementation partner to show, in a test environment, that a tool call outside the allowlist is blocked at this layer even when the model's output asks for it.

Gateway for routing and budgets

An AI gateway such as LiteLLM or Apache APISIX sits between the agent and the model providers. It enforces which models an agent may call, spending limits, and rate limits, so a looping agent cannot exhaust budget or keys. The gateway is a second control point, not a replacement for tool-level checks. Confirm which guardrail hooks your chosen gateway can call and what it logs when it blocks a request.

Secrets manager with per-tool credentials

Each tool should receive its own short-lived credential, scoped to the single operation it needs, issued by a secrets manager you run. The agent runtime and the model should never hold the master credential for a ticketing system, database or payment API. Ask your partner how credentials are rotated, how revocation reaches running agents, and whether a read-only tool can ever obtain write scope.

Log store for every agent action

Every proposed call, approval decision, tool response and blocked request should be written to a store you control. Langfuse can hold these traces in your own storage, and Article 12 and Article 19 of the EU AI Act set record-keeping and six-month retention expectations for high-risk systems. Size the deployment against the scaling guide: web, worker and PostgreSQL at 2 CPU and 4 GiB each, Redis or Valkey at 1 CPU and 1.5 GiB, ClickHouse at 2 CPU and 8 GiB with at least 16 GiB for larger deployments, plus S3-compatible storage for blobs.

How a tool-call guardrail rollout moves from inventory to approvals

This sequence turns an agent that can call tools into one whose actions are known, limited, approved where risk requires it, and recorded, with each phase producing a file or test result that a security reviewer can inspect.

  1. Inventory every tool and its side effects

    The platform owner and the business owner of each agent list every tool the agent can call, including internal APIs, database queries, file operations, email, ticketing and third-party services. For each tool they record what it changes, what data it reads, and which system of record it touches. The output is a tool register with one row per tool, an owner, and a named data classification. The step is done when every tool the runtime can reach appears in the register and no tool is reachable without an entry.

  2. Classify tools as read, write or external

    Each registered tool is tagged as read (no state change inside the organization), write (changes internal state such as records, tickets or permissions) or external (sends data or triggers actions outside the organization's boundary). Security and the business owner review the classes together, because a tool that reads customer records and sends the result to an outside service carries external risk even though it looks like a read. The output is the classified register, with a rule that write and external tools need stricter rails. The step is done when the reviewers have signed the classification.

  3. Define allowlists and argument schemas

    For each tool, the team defines which actions are permitted, which argument values are valid, and which ranges, identifiers or destinations are out of bounds. Argument schemas typed to the tool's parameters reject malformed or unexpected calls before execution, and allowlists limit the tool to named operations and approved targets. The output is a versioned policy file per agent, stored with the rail configuration. The step is done when every tool in the register has an allowlist entry and a schema, and a reviewer can trace each permitted operation to a business need.

  4. Build execution rails and test against injected prompts

    Engineers write execution rails in the chosen framework, such as NeMo Guardrails execution rails for custom actions and tools, so every tool call passes the allowlist and schema checks before the action runs. They then test the rails with a suite of prompts that try to make the agent call disallowed tools, pass out-of-range arguments, or pursue instructions hidden in retrieved content. The output is the rail configuration under version control and a test report listing each injected prompt, the expected block, and the observed result. The step is done when every expected block is reproduced and every failure is either fixed or accepted in writing.

  5. Add approval steps for risky actions

    Write and external actions above a defined risk threshold are routed to a human approver before execution. The approval step shows the requesting user, the agent's stated reason, the exact arguments, and the target system, and it records the decision with the approver's identity. Approval paths are tested for timeouts, rejected requests and attempts to skip the step. The output is an approval workflow definition, a list of actions that require approval, and test results showing that unapproved calls do not execute. The step is done when the approver queue and the blocked path have been exercised end to end.

  6. Issue scoped credentials for each tool

    Each tool runs under its own service identity with the minimum permissions its allowlist requires, rather than a shared administrative key. Credentials are stored in the organization's secrets management, are rotated on a schedule set by the security team, and can be revoked without redeploying the agent. The output is a credential map linking each tool to its identity, scope and owner. The step is done when a test shows that a compromised or misused tool credential cannot reach operations outside its scope, and that revocation takes effect.

  7. Turn on action logging and set retention

    Every tool call is logged with the user, agent version, prompt reference, arguments, rail decisions, approval outcome, result status and timestamp, and blocked calls are logged with the reason for the block. Logs are stored in the organization's own infrastructure with access controls, and the retention period is set by the compliance owner. For high-risk AI systems under the EU AI Act, Article 12 requires automatic recording of events and Article 19 requires providers to keep those logs for at least six months unless other law provides otherwise. The output is a log schema, a retention policy and a sample review export. The step is done when a reviewer can reconstruct a complete action trail for a single session.

  8. Run red-team tests on tool misuse

    A team separate from the builders attempts to misuse the agent's tools through direct and indirect prompt injection, chained calls that combine permitted tools into a forbidden outcome, and attempts to exfiltrate data through an external tool. Findings are recorded with severity, reproduction steps and the rail or policy change that closes each one. The output is a red-team report and a retest record confirming fixes. The step is done when no open finding allows an unapproved write or external action, and any accepted residual risk is documented with an owner.

  9. Move to production with a rollback path

    The rail configuration, policy files, approval workflow and credential map are promoted to production through the same change process used for other software, with each release tagged. Before the switch, the team confirms that the previous agent version and its rails can be restored, and that the operations team knows how to disable a single tool or force approval for all write actions. The output is a release record, a tested rollback procedure and a runbook entry for disabling tools. The step is done when a rollback has been rehearsed in a non-production environment and the on-call team has the runbook.

Evidence an auditor or regulator will ask for from agent tool calls

This table lists the records an assessor is likely to request for an agent that calls tools, the component that produces each record, and what to confirm before the evidence is needed. Use it to design logging and storage before go-live, not after an assessment starts. DeployOpen prepares systems, controls and evidence for assessments, but independent auditors and certification bodies issue any audit report or attestation.

Evidence itemWhat it showsProduced by
Tool registerEvery tool an agent can call, its owner, purpose, data it touches and risk tierVersion-controlled repository alongside the NeMo Guardrails configuration
Allowlist configuration and change historyWhich tools and arguments are permitted in execution rails, and who changed them and whenNeMo Guardrails configuration files in Git, with commit and review records
Approval recordsWho approved each risky action, what they saw, and the decision and timestampTicketing or workflow tool, such as n8n or Flowable, linked to the agent request ID
Scoped credential inventoryWhich credential each tool uses, its permissions, owner and rotation historySecrets manager, with access policies and audit logs for secret retrieval
Per-action logs with timestamps and actorEach tool call, its input and output summary, the calling agent and user, and the outcomeGateway logs (LiteLLM or Apache APISIX) correlated with Langfuse traces
Blocked action recordsCalls stopped by execution rails or allowlist checks, with the rule that triggered themNeMo Guardrails logs and Langfuse traces tagged by rail
Retention settingsHow long logs and traces are kept, where they are stored and who can read themLangfuse data retention settings (Enterprise license key feature) and gateway log storage configuration
Red-team test resultsWhich prompt injection and tool misuse cases were tested, results, and fixes madeSecurity test reports from DeployOpen or internal testing, stored with the release record

What buyers ask before hiring help with agent tool-call guardrails

How much effort does agent tool-call guardrail work take, and what drives it?

Effort rises mainly with the number of tools the agent can call, how many of them write or change data, how many approval paths the business needs, and how wide the test scope is. A read-only agent with two tools is a small job. An agent that can issue refunds, change customer records and send email through several systems touches every tool owner and needs a test case for each risky path. Ask any partner for a written scope that lists each tool, its permission level, each approval rule and the attack cases that will be tested. No DeployOpen price or duration is implied by this answer; a quote follows from that written scope.

What does the client need to provide for this work?

The work depends on three groups inside the organization. Tool owners must confirm what each tool does, which actions are safe to automate and which need a person to approve them. Security must sign off on the allowlists, the approval rules and the logging design. The identity team must provide or confirm the service accounts and scoped credentials each tool will use. Without these inputs, rails are written against assumptions that later fail review. Agree on named contacts and decision dates in the statement of work before work starts.

Can an internal team build agent tool-call guardrails alone?

A capable internal team can do it, but it needs skills across several areas at once. The team needs engineers who can write NeMo Guardrails configurations (in Colang and Python actions) or Guardrails AI validators, backend developers who understand how each tool authenticates, identity engineers who can issue narrowly scoped credentials, and security testers who can attempt prompt injection and privilege misuse against the agent. It also needs an owner for ongoing policy changes. Many teams underestimate the testing and the change control. Ask whether your team has these skills in-house, and whether it can keep the guardrails current after the first release.

How long does a rollout take, and what sets the timing?

Timing depends on how many tools are in scope, how many of them need human approval paths built into an existing workflow tool, how long tool owners take to review allowlists, and how much security testing is required before release. Dependencies on identity provisioning and on change approval processes often set the critical path more than the rails themselves. No duration is supplied for this work, so ask any partner for a phased plan that names the dependencies, the sign-off gates and the test exit criteria in writing.

Why are NeMo Guardrails and Guardrails AI not interchangeable for tool calls?

They solve different parts of the problem. NeMo Guardrails configures input, dialog, retrieval, execution and output rails in Colang, and its execution rails are the layer that checks custom actions and tool calls before they run. Guardrails AI builds input and output guards from validators on Guardrails Hub and generates structured output that matches Pydantic models. Guardrails AI does not provide the same dialog-level control flow for multi-step agent actions. Teams often use Guardrails AI validators for the content checks and NeMo Guardrails execution rails for the action checks. Confirm the exact fit for your agent framework and tool set during design.

Do the agent action logs satisfy the EU AI Act?

Logs are necessary but not sufficient on their own. Article 12(1) of the EU AI Act requires high-risk AI systems to technically allow automatic recording of events over the system's lifetime, and Article 19(1) requires providers to keep those logs for at least six months unless other law says otherwise. Each tool call should record the request, the decision of each rail, the approval outcome and the identity used. Whether your system is high-risk, and how the logs fit your broader technical documentation, is a legal and compliance question to confirm with counsel and your auditor. DeployOpen prepares the logging and evidence; it does not issue an assessment.

How does Langfuse enterprise licensing affect the scope of this work?

Langfuse's core features and APIs are available under the MIT-licensed open source version, and self-hosted deployments use the same codebase as Langfuse Cloud. Some features need an Enterprise license key on a self-hosted instance, including project-level RBAC roles, data retention policies, audit logs, server-side data masking and SCIM-based org management. If your review requires audit logs or masking of tool arguments in traces, add that feature to the scope and confirm the license with Langfuse before design. Content under the ee directories is covered by a separate enterprise license, so keep that boundary explicit in the architecture and the contract.

What to ask an implementation partner before agents get write access

Start by asking how the partner proves that a rail blocks a malicious tool call, not just that it looks configured. Ask for the test cases behind each execution rail: a crafted user request that tries to make the agent call a tool outside its allowlist, a retrieved document carrying hidden instructions, and a tool argument that tries to widen a query beyond its scope. Ask whether these tests run in a non-production environment on every rail change and whether the results are kept as evidence. A control that has never been tried against an attack is not yet a control. Ask also how the partner tests when the model itself is compromised, because a rail that depends on the model's cooperation will fail in exactly that case.

Next, ask how approvals are enforced. The right answer places the human approval step in the tool execution path, outside the model, so that a compromised model cannot approve its own high-risk action. Ask where the approval queue lives, which roles can approve, whether the approver sees the exact arguments the tool will receive, and what happens when no one responds. Ask how credentials are scoped: each tool should hold its own service identity with the narrowest permissions it needs, short-lived tokens where the platform supports them, and a documented rotation procedure. Ask who performs rotation and how the partner confirms that a revoked credential stops working. Red flag: any control that exists only in the system prompt, or any answer that relies on the agent to decide whether an action is safe.

Finally, ask where action logs are stored, who can read them, how long they are kept and how they are protected from alteration. Logs should record the blocked and allowed tool calls, the rail that made each decision and the approver identity, and they should be kept in infrastructure the organization controls. For systems that may fall under the EU AI Act, confirm the retention period against Article 19(1) with legal counsel, since the Act sets a minimum of six months unless other law provides otherwise. Ask how rail changes are versioned, who reviews them and how a rollback is performed. If the partner plans to migrate Colang 1.0 configurations to 2.x with the nemoguardrails convert tool, ask for the manual review record, because NVIDIA states that converted configurations still need review.

How DeployOpen scopes and builds agent tool-call guardrails

DeployOpen plans, implements, hardens and documents self-hosted platforms inside the client's own cloud accounts, data centers or air-gapped networks, and that includes the guardrail layer around an agent's tools. The work starts with a written scope that names each agent, every tool it can call, the credential each tool uses, which actions need human approval, and where the logs of tool calls are stored. Scope, deliverables and timelines are agreed in writing before any build begins, and the quote follows from that document. Because the scope lists the tools and actions explicitly, the reader can see what is covered and what is out of scope before paying for it.

A typical scoped build covers the execution rails and allowlists, the approval workflow for risky actions, scoped service credentials per tool, and logging of every tool call, with the configuration stored in version control. DeployOpen then runs security testing against the agent, including prompt injection attempts that try to make it call tools it should not, and red teaming of the approval path itself. Test results and configuration evidence are written up so that the client's auditors or assessors can review them. DeployOpen prepares that evidence but does not issue audit reports, attestations or certifications; independent auditors and certification bodies make those determinations.

Agents change as tools are added and models are swapped, so many clients keep a retainer after handover for continuous testing, upgrades to the guardrail framework and periodic review of the allowlists. Ask any partner, including DeployOpen, to state in the written scope which of these items are one-time and which recur, who holds the admin credentials after handover, and how changes to the allowlist are reviewed before they go live. Confirm with the partner which agent framework and guardrail versions they will pin, and confirm the current release of each component with its upstream repository before the scope is signed.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.