What looks wrong?

We say this article was researched and checked. If it is wrong, we want the counter-example.

Skip to content
Osei Tetteh

Sep 8, 202613 min read

AI tool-calling enables a model to move beyond text generation by producing structured data that triggers specific actions in external software environments. Rather than guessing at a result, the model identifies which predefined function satisfies your intent and formats the necessary parameters to execute it.

AI tool-calling connects LLM reasoning to system action

The mechanics of function calling and tool definitions

The process relies on a structured exchange where the model acts as a controller. You provide the model with a manifest of available tools (definitions written in JSON schema) so the model understands the specific inputs a function requires.

The tool-calling loop follows a predictable path:

  1. A user prompt enters the LLM.
  2. The LLM outputs a JSON block containing a function name and arguments.
  3. A 'Tool Executor' block sends that to an external API.
  4. The raw data is returned back to the model to synthesize a final answer.

This separation ensures the model never touches the underlying code directly, minimizing the risk of prompt injection leading to unauthorized command execution.

Why agents require stateful execution environments

Reliable agents need more than a single exchange; they require a persistent context to handle multi-step workflows. While a standard API call is ephemeral, a stateful environment allows the agent to store variables or temporary files across several turns.

This means it can debug its own errors without losing progress. The moment a connector is configured in Activepieces, it runs as a step in a flow and as a tool schema on a per-project MCP server, reachable from Claude or ChatGPT.

A small figure in a gardener's apron carefully grafting a new branch onto a large, complex tree, while the rest of the tree…

This unified registry ensures that agents call the exact same sandboxed boundaries used by deterministic workflows, rather than requiring a second, unmanaged integration layer.

The shift from write-capable agents

Granting an LLM the ability to call tools transforms it from a research assistant into a system user with the power to modify production data. This transition shifts the security focus from what the model "knows" to what the model is "allowed to do."

AI agent configuration screen for SEO Blog Writer agent showing instructions, tools section, and structured output settings.

Read-only tools like documentation fetching pose low integrity risk but require strict data privacy controls. Write-capable tools for updating records introduce the risk of automated data corruption if the model hallucinations a parameter.

Administrative tools that manage cloud permissions represent the highest risk tier, demanding the narrowest possible sandbox isolation.

Everything below works on Activepieces' free plan. Start without code or a credit card.

Prompt injection transforms legitimate tools into malicious exploits

When a malicious command is embedded in user input or retrieved data, prompt injection forces an agent to ignore its system instructions. Agents treat natural language as both the control plane and the data plane.

A computer monitor displaying a file search window with a list of files, next to a black local terminal window showing a…

An attacker can hijack the execution flow to trigger sensitive functions the agent was authorized to perform but shouldn't have initiated, such as deleting a database record.

Direct injection: The user as the attacker

Direct injection occurs when a user explicitly commands the agent to bypass its guardrails. If you use a local terminal plugin, a malicious prompt can trick the agent into running rm -rf instead of a harmless file search.

This forces you to treat every user-facing text box as a potential command-line interface with root access.

Indirect injection: Poisoning the data the agent reads

Indirect injection is a silent failure mode where an agent processes external content, like a website or PDF, containing hidden instructions.

When an agent uses a web-scraping tool to summarize a page, a hidden prompt can instruct the agent to ignore its task and instead upload the user's session cookies to a remote server.

Activepieces workflow builder showing a Page Audit step using Text AI with OpenAI GPT-4o to create an SEO audit.

The user believes they are performing research, but the agent is executing the will of a third-party attacker.

Data exfiltration via confused deputy tool-calls

The "confused deputy" problem occurs when an agent uses its legitimate permissions to move data to an attacker-controlled destination.

Attack Vector Mechanism of Failure Consequence for the System
HTTP Request Hijacking Agent is tricked into sending internal headers to a public URL. Private API keys are leaked to an external logging server.
Email Forwarding Agent interprets a "summarize this" command as "forward this to an outsider." Sensitive intellectual property leaves the managed corporate tenant.
Database Exfiltration Agent executes a broad SELECT query and outputs the result to a public chat. Large-scale data breaches occur without a single firewall breach.

The growing security debt of open-source agent frameworks

Structural isolation remains elusive because current open-source frameworks prioritize rapid prototyping over rigorous boundary enforcement. You are inheriting an architectural deficit that treats security as an afterthought.

Security Debt of Open Source Frameworks

Popular agentic libraries harbor significant security flaws. Research from Microsoft identified 512 documented vulnerabilities across the ecosystem. Within these frameworks, auditors found 8 critical bugs, representing a high probability that an attacker could achieve remote code execution.

You are inheriting an architectural deficit that treats security as an afterthought.

Why 'God-mode' API keys persist in production code

The convenience of "God-mode" access persists because most frameworks lack granular credential scoping. Microsoft's analysis found 1,800 instances of leaking API keys. These leaks occur because frameworks often store secrets in plain text or environment variables that the LLM can inadvertently print to a log.

The risk of malicious plugins in community-driven ecosystems

Community-driven plugin ecosystems introduce unvetted code into the heart of the execution environment. The Microsoft report flagged 336 malicious plugins. Any developer pulling a "productivity helper" from a public registry might be installing a persistent backdoor.

By mapping the path from a lead source to a CRM, platforms can theoretically intercept data before it reaches a sensitive sink. However, visibility isn't the same as protection.

To move to actual safety, you must transition from observing these connections to enforcing hard boundaries at the tool-call level.

Easier to see it running than to read about it: set it up free, no card.

Structural defenses for securing the agentic tool-call lifecycle

Hardening the tool-call boundary requires moving beyond trusting the model's reasoning to enforcing structural constraints the LLM can't bypass. By treating the agent as an untrusted user, you shift the security burden from the model's intent to the platform's execution layer.

Implementing Pydantic and JSON schema enforcement

Strict schema enforcement ensures the execution environment only receives data in a format it can safely parse. When you use Pydantic to define tool inputs, the agent is physically unable to pass arbitrary strings into a shell command or database query.

This creates a hard failure at the validation layer, protecting the underlying system from malformed payloads.

Validating content within the schema boundary

While schemas validate the structure of the data, they do not inherently validate the content of a string against injection. A field defined as a string is technically valid even if it contains a malicious payload like a command separator followed by a destructive script.

Input sanitization to block injection attacks

To achieve true safety, schema enforcement must be paired with traditional input sanitization or parameterized queries. You must treat the validated string as untrusted input and strip characters that could trigger unintended shell execution or SQL injection.

For example, when an agent generates a filename for a shell-based tool, the execution layer should use a library like shlex.quote() in Python to escape the string, or pass arguments as a list to subprocess.run() rather than a single string.

This ensures that a payload like file.txt; rm -rf / is treated as one literal filename rather than two separate commands.

Human-in-the-loop approval for high-risk tool calls

A tiered risk model dictates that autonomy is inversely proportional to the potential impact of the tool. By categorizing tools based on side effects, you can automate routine data retrieval while forcing a manual "Human-in-the-loop" (HITL) approval for actions that can't be easily reversed.

Risk Level Action Type Control Mechanism Operational Outcome
Low Read-Only (e.g., Slack history) Policy-based access Full autonomy for data gathering and synthesis.
Medium State-Changing (e.g., Jira updates) Schema validation Automated updates with strict audit logging.
High Destructive/Financial (e.g., AWS deletion) HITL Approval Critical infrastructure remains protected by a human gatekeeper.

Building intent-based firewalls for LLM outputs

Intent-based firewalls act as a semantic filter that intercepts the model’s generated text before it reaches the tool-calling logic.

Unlike traditional firewalls, these tools (such as the NeMo Guardrails framework developed by NVIDIA) analyze the prompt and response for signs of "jailbreaking." This prevents the agent from ever initiating a connection to sensitive backend services.

Sandboxing execution environments with Activepieces

Activepieces provides a managed orchestration layer that prevents an LLM from executing code directly on your production servers by routing every tool-call through a decoupled, sandboxed environment.

The MIT-licensed core provides access to 732 integrations, where every action is defined in the Integrations Framework to ensure the LLM only interacts with validated schemas.

By checking the open source repository, security teams can verify that the same code running a deterministic flow step is what is exposed as an MCP tool, preventing the model from bypassing established security boundaries.

Running tool-calls in ephemeral Docker containers

Isolation is achieved by wrapping every automation step in a discrete Docker container that exists only for the duration of that specific task. Because these containers are ephemeral, any malicious code executed by a compromised agent lacks a persistent filesystem to hide in.

This architecture forces a "clean slate" for every interaction.

Separating LLM reasoning from connector execution logic

The platform functions as a secure gateway by strictly separating the LLM’s reasoning process from the actual execution of connector logic.

The LLM Kernel generates the intent and parameters but has no direct network access to the target API. The Integration Connector is a pre-defined code block that receives parameters, validates them, and performs the API call within the sandbox.

The Execution Bridge is the only communication channel allowed between the two, ensuring the model never sees underlying credentials.

Monitoring and logging tool-call telemetry for forensic audits

Centralizing these calls creates a comprehensive audit trail. Every decision an agent makes is captured in the Run Details and Debugging UI, providing a step-by-step trace of the tool-call.

This allows you to distinguish between a model hallucinating a bad command and a deliberate prompt injection attack.

Every agent tool call and the data it acted on is traced alongside the deterministic flow steps running next to it.

MoneyGram and Moneypenny run Activepieces in production, where these traces export as audit logs and event streams into the SIEM their security teams already run, ensuring agent decisions are reviewed with the same rigor as manual workflow steps.

AI-generated email output from a workflow step showing a subscription payment reminder message.

The Monday morning agent security audit checklist

Securing an agent deployment requires shifting from broad administrative access to a granular, tool-by-tool validation process. Giving agents full API keys creates a blast radius where a single prompt injection can compromise an entire cloud organization.

Step 1: Map every tool to its minimum required scope

Ensure each tool available to the agent possesses only the specific permissions required for its task.

  1. Scope all API tokens to single-project access so that a compromise in one service can't migrate to your production database.
  2. Set 30s timeouts for dangerous actions to ensure that automated loops can't execute high-volume destructive commands before an admin can intervene.
  3. Implement embedding-based anomaly detection to flag when an agent requests a tool that falls outside its historical semantic patterns.
  4. Enable multi-stage response cycles where the agent must justify a tool call in a hidden scratchpad before execution, providing an audit trail for intent.

Step 2: Audit all external data sources for injection risks

Every retrieval-augmented generation (RAG) pipeline represents a potential entry point for malicious instructions. If an agent reads an email to summarize it, it may encounter text that instructs the model to ignore its system prompt and exfiltrate data.

Data ingestion is now a vector for remote code execution.

Step 3: Implement a manual approval step for 'Write' actions

High-impact operations must be gated by a human-in-the-loop interface. While "read-only" agents can run autonomously, any action that modifies a database or sends an external communication requires a physical "Approve" click.

Data ingestion is now a vector for remote code execution.

This ensures a supervisor catches a hallucinated "Delete User" command rather than letting it execute at machine speed.

Frequently asked questions about AI agent security

Does adding security layers significantly increase agent latency?

Security layers introduce measurable overhead because every request must pass through an external validation gate before reaching the execution environment.

When you route calls through a dedicated proxy like the Cloudflare AI Gateway, you add milliseconds to the round-trip time, meaning the agent feels slightly less responsive to the end-user.

However, this delay is the trade-off for preventing prompt injection attacks from reaching your core database. You mitigate the impact by using:

  • Regional execution zones to keep the sandbox geographically close to the model provider.
  • Parallel validation checks that run while the sandbox is spinning up.
  • Cached policy sets to avoid redundant lookups for repeat tool authorizations.

Can I use a system prompt alone to prevent tool-call exploits?

System prompts are a fragile defense because they rely on the model’s ability to follow instructions under pressure, which frequently fails during adversarial attacks.

If a user provides a malicious input that contradicts your "don't delete files" instruction, the model may prioritize the new context, resulting in unauthorized data destruction.

Relying solely on a prompt means your security posture is only as strong as the model’s next hallucination.

How does agentic tool-calling affect SOC2 or GDPR compliance?

An agent with "unfettered access" creates an unreportable gap in your controls. Agentic tool-calling complicates compliance by introducing non-deterministic actors that can access and move Personal Identifiable Information (PII) without a static audit trail.

Under SOC2 Type II, you must prove that access to sensitive data is restricted. By using a sandboxed boundary, you turn the agent into a service account with a limited scope.

This allows compliance officers to audit the specific permissions granted to the tool rather than the unpredictable behavior of the LLM.

What is the difference between a tool-call and a standard API call?

The primary difference lies in the caller's intent and the predictability of the payload. In a standard API call, a human-written program sends a structured request to a service like the Stripe payment processor. This ensures the output is always within defined bounds.

In a tool-call, the LLM generates the parameters dynamically. This means the "caller" might attempt to pass unexpected strings or out-of-range values that your downstream systems weren't designed to handle.

This shift requires you to treat every agent-generated request as untrusted input that must be sanitized before it hits a production endpoint.

References

Share

Get started

Automate this without code.

Cloud or your own servers.

Start free Talk to sales