Skip to main content Announcing Tool Gateway MCP: the universal MCP Read the announcement

Agent Tool Policies. One policy engine
for every tool your agents call.

Block actions across every connector, hide the fields an agent doesn’t need, keep PII out of systems it shouldn’t reach, and test each rule before you enforce it.

From every connector to a single field.

Who it applies to

What the policy covers
Mask reads
SSNPersonal emailHome address
Block changes
Bank detailsSalaryEmployment status
Redact PII
Email addressesPhone numbersCard numbers

Personal fields masked, salary changes refused, PII redacted. Enforced for 3 groups.

Companies already connected through StackOne

  • SOC 2 Type II
  • Encrypted at rest and in transit
  • Every policy decision logged

Beyond tool permissions. A tool permission
is only the start.

A connection gives the agent every tool and every field. Policies decide which tools run, which fields come back and what data can go in or out, for each user or group.

With tool-level access alone

The tool is allowed. What else?

Tool available to the agentAvailable
  • Read a recordSensitive fields included
    Read
  • Update a recordWritable fields exposed
    Write
  • Set a valueProvider validation only
    Value
  • Send a messageAny content goes out
    Input

Inside an allowed tool, the agent can read or change anything, whatever your policy says.

With StackOne Policies

The right access, within limits.

Tool available to the agentAvailable
  • Read a recordFields masked, PII redacted
    Read
  • Update a recordProtected changes blocked
    Write
  • Set a valueValue rules checked
    Value
  • Send a messageSemantic rules and PII checks run first
    Input

Your security and privacy rules apply on every call, across connectors, users and groups.

Tool Policies in the conversation. The agent understands the task.
Policies define the limits.

See a protected ERP field stop a change for a group, or a tool restriction stop a request for an individual user.

Agent chatPolicies enforced
ProcurementGroup

Change the supplier’s bank account number in SAP.

SAP S/4HANA

Update Business Partner Bank
Policy matchedEnforce
Protect supplier bank details

Applies to Procurement group

Protected field

Bank account number
Denied

The Procurement group can’t change bank account numbers. No bank details were updated.

Bank account number unchanged

How Tool Policies work. Every request runs the same route.
StackOne Tool Policies sit on it.

StackOne evaluates policies for the user the agent acts for. Tool rules, value rules, semantic rules and PII checks run on the inputs before the business system is called. Field rules, PII redaction and semantic rules run on the response before the agent sees it.

Before execution

A denied tool or input value, or an input a semantic rule or PII check refuses, stops the whole request. Nothing reaches the business system.

After the call

Denied fields are masked and PII is redacted before the response reaches the agent. The rest of the record stays available.

Always logged

Every evaluated policy is recorded with its mode and decision, including what Monitor only would have done.

Tool, field, value and semantic rules. Give every team’s agents
only the access they need.

Block tools across every connector, hide the fields a task doesn’t need, limit the values an agent can send, and check the data going into and out of each call.

Tool rules

One rule.
Every connector.

Block tools by name or pattern, such as *delete*, across a connector category, one connector, one linked account or the whole project. Scope the rule to everyone, named users or groups synced from your identity provider, with exemptions.

Example rule · ContractorsFor the Contractors group, block every tool matching *delete* on every connector.

Contractors group*delete*
personio_delete_personPersonioBlocked
salesforce_delete_opportunitySalesforceBlocked
slack_delete_fileSlackBlocked
salesforce_get_opportunitySalesforceExisting access

Field rules

Hide what the task doesn’t need.
Protect what agents write.

Mask response fields by path, such as the bank account number on an employee record, and refuse changes to protected fields. An onboarding agent can read a start date while personal email reads and salary changes stay blocked.

Example rule · Employee onboardingFor the onboarding group, deny personal email reads and salary writes.Explore employee onboarding

Onboarding group
Job titleReadExisting access
Start dateReadExisting access
Personal emailReadBlocked
SalaryWriteBlocked

Value rules

Allow the action.
Constrain the values.

Keep a tool available while defining which inputs are acceptable. Set an amount limit, restrict a status change, or prevent public sharing. The same action can pass or be blocked depending on the value it carries.

Your conditions, across systemsApply ranges, exact values and combinations of conditions to the users or groups that need them.

Explore value rules
Payment amountTool input

Between $25 and $500 USD

$250 USD
Not blocked
$750 USD
Blocked

For Finance, block payments outside $25 to $500 in USD.

Keep routine payments within your approved limit.

Xero

Semantic rules

Ask a question.
A model answers it on every call.

Write the rule as a plain-language question. A decision model answers it for each field or payload, on inputs before the tool runs and on responses before the agent sees them, whatever the system calls the field.

Example rule · FinanceFor everyone outside Finance, block Slack, email and Notion messages that contain unreleased financial results. The agent can still summarise the close for Finance.

Semantic ruleTool input

Does this message contain unreleased financial results?

Slack · #all-handsQ3 revenue closed 12% over plan. Board pack attached.Blocked
Slack · #all-handsExpense reports are due on Friday.Not blocked

Applies to slack_send_message, gmail_send_message and notion_create_page

PII redaction

Find PII in any field.
Redact it or block the call.

StackOne’s own model finds email addresses, phone numbers, SSNs and card numbers in inputs and responses, then redacts the span or blocks the call. It doesn’t rely on field names, so it catches PII inside ticket text and notes.

Example rule · Customer supportRedact PII in Zendesk responses and block writes to Jira and Slack that contain it. The agent still escalates the bug.See the benchmark

Zendesk ticket · free-text field Tool output

The customer asked us to send invoices to <POLICY_REDACTED:EMAIL>, call back on <POLICY_REDACTED:PHONE_NUMBER>, and pasted card <POLICY_REDACTED:CREDIT_CARD> to retry the payment.

Email addressesPhone numbersCard numbers

PII redacted in the response. The rest of the ticket stays readable.

PII detection on connector data

Span F1 on 247 Connector PII field values, and false positives on 129 connector field values that contain no PII. Full benchmark on the PII Redaction page.

Span F1. Higher is better

StackOne
97.9%
Microsoft Presidio
68.1%

False positives. Lower is better

StackOne
3.1%
Microsoft Presidio
48.8%

Policy AI Assistant. Describe the rule.
Review the draft.

The admin describes the rule and the assistant drafts it for review. It looks up your groups, connectors, tools and linked accounts as it writes, and flags what a pattern might miss. Try the examples below and switch between Cedar and JSON.

Policy AI Assistant Active
Try a use case
Hide PII fields in tool responses and block requests that change those fields. Keep other fields within their existing permissions.
Who it applies to

Enforcement

Generated policyRead + write restrictions
Policy format
forbid (
  principal,
  action in [
    StackOne::Action::"readField",
    StackOne::Action::"writeField"
  ],
  resource in StackOne::Label::"pii"
);

The same rule in Cedar or JSON. Audience and mode are assigned separately.

Audience
Everyone
Mode
Enforce

PII field group

PII fields protected

PII fields are masked in responses. A request that changes a protected field is blocked in full. Other fields keep their existing access.

Why Cedar instead of OPA/Rego?

Our policies are generated from connector schemas, so the engine had to be one we can generate for correctly, check before a rule goes live, and run inside the connector runtime. Cedar fits that shape. Rego, the language behind OPA, did not, and the reasons came out of our engine review rather than preference.

Shaped like an access rule

Cedar's principal, action, resource and context map one to one onto what a policy names: the member, the tool, the field and the value. A generated rule keeps that shape, which is what lets the builder write Cedar for you and validate it against the connector schema before it is saved. Rego is a general-purpose logic language. Generating correct Rego from thousands of action schemas is where our review found the most ways to be wrong.

Proven, not only tested

Cedar decisions are deterministic, and Cedar Analysis can prove that one set of rules is equivalent to, wider than or narrower than another. That is the property behind the guarantee that a policy only ever narrows access. Rego evaluation can raise errors at runtime and has no equivalent analysis.

Readable by the people who own it

A rule an admin cannot read is a rule nobody reviews. Products built on OPA end up compiling their own YAML into Rego so their users never see it, and OPA's maintainers argue against that pattern because it loses the tooling. A Cedar statement is short enough to sit next to its plain-English preview in the builder, and its Rust and WebAssembly runtime evaluates it inside the connector path in under a millisecond, with a matching forbid always winning.

Read more: Cedar validation, Cedar Analysis and the OPA discussion on YAML-wrapped Rego.

Rolling out Tool Policies. Monitor first.
Then enforce.

Activate a policy in Monitor only, read what it would have done in the request logs, then switch to Enforce for a test audience before everyone. How Monitor only and Enforce work, in the docs.

  1. 1 Monitor only

    Activate in Monitor only

    The policy is evaluated on every matching call and nothing is blocked or masked. Each decision is recorded.

  2. 2 Request logs

    Review the request logs

    See which calls would have been denied or masked, for which members, and which rule matched.

  3. 3 Enforce

    Switch to Enforce

    Enforce for a test audience first, then for everyone. A matching deny stops the call or masks the field.

Scope each restriction to users or groups. Policies narrow existing permissions; an applicable deny rule takes precedence, and an exemption skips only that rule.

Tool Policy audit trail. Every decision logged.
Any call can become a policy.

Trace each governed request to its user, connector and policy decisions. See what was blocked, masked or redacted, and what Monitor only would have denied. Open any logged call, choose Use in policy, and the assistant drafts a rule from it. Start a policy from a log.

Request logs3 recent requests

Send Message

Slackreq_8f21b4

Blocked
Origin owner
Priya Shah (Accounts Payable Lead)
Group
Revenue operations
3 policies evaluatedMode / decision
Unreleased financials stay in FinanceEnforceDenied

MatchedSemantic rule · “Does this message contain unreleased financial results?” The answer was yes, so the request was refused before execution.

Keep PII out of SlackMonitor onlyNo match

No matchPII check · No email addresses, phone numbers, SSNs or card numbers were found in the message.

Contractors can’t deleteEnforceNo match

No matchTool rule · Send Message does not match *delete*, and the user is not in the Contractors group.

Before executionThe message contained unreleased financial results. Nothing was posted to Slack.

Tool Policy use cases. Three policies IT teams start with.
Each one starts in Monitor.

Each combines the rules above. Read what it would do in the request logs, then enforce it.

  • Tool rule

    Contractors can’t delete anything, anywhere

    One rule blocks every tool matching *delete* across all connectors for the Contractors group.

    Watch it in Monitor, enforce it, then open the logged deny.

  • Semantic rule

    Unreleased financials stay in Finance

    A semantic rule asks “Does this message contain unreleased financial results?” on Slack, email and Notion send tools, for everyone outside Finance.

    The agent can summarise the NetSuite close for Finance. Posting it to a shared channel is blocked.

  • PII redactionField rule

    Customer PII stays in support

    PII redaction on Zendesk responses, a field rule hiding the card number, and a PII block on writes to Jira and Slack.

    The agent still escalates the bug.

Every Tool Policy control. Control the field.
Understand the context.

Set fixed rules on connectors, tools, fields and values. Add semantic rules and PII checks on what goes into and comes out of each call.

Expand a control to explore example policies.

Precise access controls

Connector categoryApply one rule to every connector in the categories you choose, including connectors added later.ERPAccountingHRISCRM+20 more categoriesChoose one category or combine several.

Example policies

  • Block delete tools on every HRIS connector for the Contractors group.
  • Protect compensation fields across HRIS connectors for your onboarding team.
Connector nameChoose the systems a rule applies to.SAP S/4HANAXeroWorkdaySalesforceGoogle DriveSlack550+ connectorsSelect any subset across your connected systems.

Example policies

  • Protect bank details in SAP and Xero for the Procurement team.
  • Restrict Workday access to selected staff or groups.
Tools and accountsSelect tools by exact name or a wildcard pattern, on a connector or a single linked account.salesforce_delete_opportunityslack_delete_file*delete*Explore 34,000+ actionsName patterns are case-sensitive, and * is the only wildcard.

Example policies

  • Block every tool matching *delete* across all connectors for the Contractors group.
  • Remove export tools from the CRM account a lead-triage agent uses.
Tool inputCheck what the agent sends before the tool runs.Salary · writeAmount > $500Sharing = publicMessage textCard numbersField rules, value rules, semantic rules and PII checks all run on inputs, across 34,000+ actions.

Example policies

  • For Finance, allow payments between $25 and $500 in USD and block amounts outside that range.
  • For Revenue operations, deny a change when sharing is set to public.
  • Block Slack, email and Notion messages that contain unreleased financial results, for everyone outside Finance.
  • Block writes to Jira and Slack that contain customer PII. A denied input stops the entire request.
Tool outputChoose which returned fields to mask and which PII to redact.PIIPersonal emailBank detailsCard numbersMask by field path, or let a semantic rule find the same data under other names.

Example policies

  • Mask personal email for Contractors while keeping job titles readable.
  • Redact email addresses and phone numbers from Zendesk responses for the support agent.

Semantic rules

Ask a question in plain languageA decision model answers your question for each field or payload, on inputs and outputs, whatever the system calls the field.Does this message contain unreleased financial results? Yes · BlockedMessage textTicket textSalary

Example policies

  • Keep unreleased financial results out of Slack, email and Notion for everyone outside Finance.
  • Hide pay from responses whether a system calls it salary, compensation or base_rate.
Redact PII in inputs and outputsStackOne’s own model finds email addresses, phone numbers, SSNs and card numbers, then redacts the span or blocks the call.Call me on [PHONE] or at [EMAIL]Email addressesPhone numbersSSNsCard numbers

Example policies

  • Redact customer PII in Zendesk responses before the agent sees them.
  • Block a Jira or Slack write that contains a card number.
Control where data goesPut semantic rules and PII checks on the send and write tools that leave a team.Zendesk ticket → Jira issue · card number · BlockedMessage textTicket text

Example policies

  • Let the support agent escalate a bug to Jira without the customer’s card number.
  • Keep client names out of messages posted to shared Slack channels.

Scope each restriction to users or groups. Policies narrow existing permissions; an applicable deny rule takes precedence.

Common questions. Tool Policies FAQ

Agent tool policies are rules that decide which systems, tools and fields an AI agent can use for a given user or group, and what data can go into and come out of each call. StackOne Tool Policies apply them on every request the agent makes through the platform: tool rules by connector, category, linked account, tool name or pattern; field rules on response and input fields; value rules on the values a tool accepts; semantic rules; and PII redaction.
A policy can cover an entire connector category or a single field within one tool. Block every tool matching *delete* across all connectors, hide the bank account number on an employee record, limit payments to between $25 and $500 in USD, or block a Slack message that contains unreleased financial results.
Yes. A field rule can mask individual output fields, or fields labelled PII, in the response, and refuse writes to protected fields such as compensation or bank details before the request reaches the business system. The rest of the record stays available to the agent.
A tool allowlist decides which tools an agent may call. Role-based access in the business system decides what a human role can see. Tool Policies sit between them: they apply to the agent acting for a user, narrow what that user already has, and reach individual fields, input values and the content going in and out of an allowed tool.
Yes. Apply a policy to everyone in the project, selected users, or groups synced from your identity provider, with exemptions. For example, block delete tools for a Contractors group while everyone else keeps their existing permissions.
A value rule keeps a tool available and checks the values the agent sends to it. Limit payments to between $25 and $500 in USD, stop an invoice moving to Authorized, or block a file share set to anyone with the link. A call with a value outside the rule is refused before the tool runs.
A semantic rule is a plain-language question, such as “Does this message contain unreleased financial results?”, that a decision model answers for each field or payload. It runs on inputs before the tool executes and on responses before the agent sees them, whatever the system calls the field.
StackOne’s own model finds email addresses, phone numbers, SSNs and card numbers in tool inputs and responses, wherever they appear, then redacts the span or blocks the call. It does not depend on field names, so it catches PII inside ticket text and notes.
On 247 Connector PII field values, StackOne’s PII model scored 97.9% span F1, against 68.1% for Microsoft Presidio. On 129 connector field values with no PII, it flagged 3.1% as PII, against 48.8%. See the full benchmark on the PII Redaction page.
The admin describes the rule and the assistant drafts it for review. It looks up users, groups, connectors, tools and linked accounts in the project, marks each suggested change in the form, and shows the Cedar rule before you create it. You can also configure a policy directly in the builder.
Agent Auth connects an agent to the right accounts. Policies add precise restrictions on the systems, actions, and data the agent can access through those connections. Policies do not grant additional permissions.
Policies apply to calls made for members of your StackOne organization, such as OAuth and AI platform sessions. API key calls and sessions without a member’s identity do not receive these member policies.
An enforced policy stops a denied tool call, or an input a value rule, semantic rule or PII check refuses, before execution. Denied output fields are masked and PII is redacted in the response. An applicable deny rule takes precedence, and exempting someone from one policy cannot override another applicable denial.
Monitor only evaluates a policy without blocking, masking or redacting, so you can inspect its decisions in request logs. Enforce applies the decision. Inactive policies do not apply, whichever mode is selected.
Yes. Request logs show every evaluated policy alongside its mode, match result, and decision. See which rule denied access, which policies did not match, and what a policy in Monitor only would have denied. Open any logged call and choose Use in policy to start a new policy from it.
Manage Tool Policies in Project Settings under Policies, on the Gateway Team and Gateway Enterprise plans. Describe the rule to the Policy AI Assistant or configure it in the builder, choose users or groups, review the Cedar rule, and select Monitor only or Enforce.

Set agent boundaries across your organization

Control the tools, fields and data your teams’ agents can reach.