> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parahelp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guardrails

> Transfer rules, deterministic checks, and human approval for sensitive actions.

You define guardrails in the Customer Agent's configurations: when it should escalate to a human, deterministic checks before a tool can run, and human approval behind sensitive actions. Prompt the Internal Agent in a task to add or change any of them.

## Intelligent transfers

The Customer Agent transfers a ticket to your team by reassigning it in your ticketing system. It always transfers when it isn't confident, can't perform an action, or if the customer asks for a human.

Every transfer includes an internal note, so your team picks up with full context, an escalation reply to the customer, and the option to specify the team it should be triaged to.

Set up or change transfer rules by prompting the Internal Agent in a task: *"When a ticket is about an enterprise account, transfer it to the enterprise team with a summary note."*

## Human approval for actions

Any tool can be gated behind human approval. Gated actions are sent to Slack with approve and deny buttons, and nothing runs until someone on your team approves. Teams typically gate refunds, account changes, and other sensitive actions, then loosen as trust builds.

Gate a tool by prompting the Internal Agent in a task: *"Require Slack approval before the refund tool runs on amounts above \$100."*

## Rules enforced in code

Policies written in memory guide the agent's judgment. Policies written in code remove judgment entirely: the check either passes or the action doesn't run.

<Accordion title="Example: a Stripe refund tool" icon="code">
  * Write actions require the requester's email to match the Stripe customer's billing email
  * Read actions require the requester's email domain to match the billing email domain
  * Refunds can't exceed the charge amount or run outside the eligibility window
  * All write actions route through Slack approval
</Accordion>

When the Internal Agent builds a custom tool, your policy rules are written into the tool's code, so they hold on every ticket, every time.

Add or change a coded rule by prompting the Internal Agent in a task: *"Never refund charges older than 60 days."* It writes the check into the tool's code and tests it before you release.

***

The agent's behavior can only change through a release you approve - see [Release](/internal-agent/release) for change control. Want to see the guardrails in action before going live? See [Test](/internal-agent/test).
