> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/endpoint-privilege-manager/policies/policy-types/agentic-access-policy.md).

# Agentic Access Policy

<figure><img src="/files/T7ncw31LWyK6RnpPqlbM" alt=""><figcaption></figcaption></figure>

### Overview

The Agentic Access policy governs **what an AI agent may execute on a user's behalf** once it is running on a monitored endpoint. Where an Agentic AI policy decides whether an agent is permitted to run at all, an Agentic Access policy applies controls to the individual actions a running agent takes — accessing sensitive files, executing privileged or command-line operations, or reaching protected resources.

AI agents — commercial coding assistants such as GitHub Copilot, Cursor, Claude Code, Tabnine, and Codeium, as well as unknown processes that behave like agents — increasingly act with the same privileges as the user who started them. An Agentic Access policy inserts an enforcement layer between the agent and the resource. A matching agent action can be allowed, denied, held for administrator approval, held for end-user (human-in-the-loop) approval, or gated behind MFA or justification — and every action is audited against the policy baseline.

While Agentic Access policies enforce controls actively, they are designed to be introduced in Monitor mode first. Observing how often a policy would match — before it enforces — lets you tune scope and risk thresholds without interrupting legitimate agent activity. See [Policy: Phased Rollout Planning](/keeperpam/endpoint-privilege-manager/setup/policy-phased-rollout-planning.md) for recommended sequencing.

### How it Works

**Targeting AI agents, not just applications.** In addition to the standard User, Machine, and Application collection filters, an Agentic Access policy can be scoped to an Agentic AI Collection — a group of known and flagged AI agent applications. Agents are detected either by signature (Known Agents) or by behavioral heuristics (Possible Agents), and any application can be flagged as Agentic AI from the Applications view so that it appears under the Agentic AI collection.

**Risk-score-driven controls.** Policy controls can be conditioned on a risk threshold. When a detected agent action exceeds a configured threshold — for example, **Likelihood of Being an AI Agent (%)** — the policy's response action is triggered. This lets you, for instance, allow low-confidence detections silently while requiring approval for anything scoring above a defined tier.

**Human-in-the-loop.** The **Require User Approval** control prompts the end user to approve or deny what the agent is attempting, in real time. This is distinct from administrator approval: it puts the human operating the endpoint in the loop for the agent's action. A *Don't ask again for N hours* option is available to reduce repeat prompts for the same activity.

**Stacked controls.** As with Privilege Elevation and File Access, controls are additive. When more than one applicable control is set (for example MFA and approval), all enforced requirements must be satisfied before the action proceeds.

**Audit baseline.** Every governed agent action is recorded, so all AI agent activity can be audited against the policy baseline regardless of the enforcement outcome.

### Controls

An Agentic Access policy supports the following controls:

**Auto-Approve (Allow)** — Permits matching agent actions without further friction. Cannot be combined with other controls.

**Auto-Deny (Deny)** — Blocks matching agent actions and returns a deny outcome without a user-facing prompt. Cannot be combined with other controls.

**Require Approval** — The action is held until an assigned approver grants the request.

**Require Justification** — A written reason must be supplied before the action proceeds.

**Require MFA** — Identity must be verified (TOTP) before the action proceeds.

**Require User Approval** — The end user on the endpoint must approve or deny the agent's action (human-in-the-loop).

### Managing an Agentic Access Policy

####

{% stepper %}
{% step %}

#### Define an Agentic AI Collection

Before creating the policy, unless you plan to use the "All Agentic AI" collection, you will need to organize the Agentic AI Agents you want to govern into an **Agentic AI Collection**. Navigate to **Collections → Agentic AI** and create a new collection. Add known agents directly, or flag detected applications as Agentic AI from the **Applications** view — flagged applications then appear under the Agentic AI collection and become available for policy targeting.

{% hint style="info" %}
Give the collection a descriptive name that reflects its purpose — for example, "Approved Coding Assistants" or "Flagged Possible Agents" — to make it easy to identify when assigning it to a policy.
{% endhint %}
{% endstep %}

{% step %}

#### Open the Policy Form

From the **Admin Console**, navigate to **Endpoint Privilege Manager → Policies** and click the **Create Policy** button. <img src="/files/6NnfrxrQKQdCeUxuSpWf" alt="" data-size="line">
{% endstep %}

{% step %}

#### Configure the Policy

Fill in the policy details:

* **Policy Name** — A descriptive name (e.g. *Agentic Access – Approval for High-Likelihood Agents*)
* **Policy Type** — Select **Agentic Access**
* **Status** — Select **Monitor** to observe matches first, or **Enforce** to apply controls actively

<figure><img src="/files/eZHZDpXscqQ7bL3oluRN" alt="" width="263"><figcaption></figcaption></figure>

{% hint style="info" %}
Agentic Access policies default to Monitor mode and support the full Monitor / Monitor & Notify / Enforce / Off lifecycle. Start in Monitor to validate scope before enforcing.
{% endhint %}
{% endstep %}

{% step %}

#### Select Controls

<figure><img src="/files/joRWcKjZ9kP2hv9DUIl1" alt="" width="327"><figcaption></figcaption></figure>

Add the control(s) to apply when a matching agent action is detected — **Require Approval**, **Require Justification**, **Require MFA**, or **Require User Approval**. Optionally configure a **Risk Score** threshold so that controls only trigger when the agent's likelihood or risk score exceeds the configured value.

**Stacked Controls** — When controls are stacked, all must be satisfied before the action is permitted. **Allow** and **Deny** are mutually exclusive and cannot be combined with any other control.

<figure><img src="/files/lkzJVxwMBvOCrdtlo3bb" alt="" width="329"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Set Policy Filters

Define the scope of the policy:

* **User Collections** — Target specific User Collections, or select all users
* **Machine Collections** — Target specific Machine Collections, or select all enrolled endpoints
* **Application Collections** — Optionally scope to specific applications
* **Agentic AI Collections** — Select the Agentic AI Collection created in [Step 1](#define-an-agentic-ai-collection)

<figure><img src="/files/YKfPamPRnrFGc23WT7AE" alt="" width="262"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Save and Deploy

Click **Save**. The policy is pushed to in-scope endpoints within approximately 30 minutes, or immediately via the **Refresh Policies** option in the Keeper agent.
{% endstep %}
{% endstepper %}

### Admin Console UI

The Agentic Access policy form exposes the following elements:

* Policy Name
* Policy Type (Agentic Access selected)
* Status
* Controls
* User Collections
* Machine Collections
* Application Collections
* Agentic AI Collections
* Certificate Collections
* Product Collections

### Policy JSON Example

The following Agentic Access policy runs in Monitor mode and allows matching actions for any application detected as an AI agent with a likelihood score of 90% or higher, evaluating all sub-processes, scoped to all users, all applications, and a single Machine Collection.

```json
{
  "PolicyName": "--> 4-Agentic Access",
  "PolicyType": "AgenticAccess",
  "PolicyId": "nRa9kyhZKhQ1Ag2lSK8ZQg",
  "Status": "monitor",
  "Actions": {
    "OnSuccess": { "Controls": ["ALLOW"] },
    "OnFailure": { "Command": "" }
  },
  "NotificationMessage": "A policy has been set to monitor mode.  When this policy is enabled, [mfa, justification, request] will be required to run this process as an administrator.",
  "NotificationRequiresAcknowledge": false,
  "RiskLevel": 50,
  "Operator": "And",
  "Rules": [
    {
      "RuleName": "UserCheck",
      "ErrorMessage": "This user is not included in this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckUser()"
    },
    {
      "RuleName": "MachineCheck",
      "ErrorMessage": "This Machine is not included in this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckMachine()"
    },
    {
      "RuleName": "ApplicationCheck",
      "ErrorMessage": "This application is not included in this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckFile(false)"
    },
    {
      "RuleName": "DateCheck",
      "ErrorMessage": "Current date is not covered by this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckDate()"
    },
    {
      "RuleName": "TimeCheck",
      "ErrorMessage": "Current time is not covered by this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckTime()"
    },
    {
      "RuleName": "DayCheck",
      "ErrorMessage": "Today is not included in this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckDay()"
    },
    {
      "RuleName": "CertificateCheck",
      "ErrorMessage": "Certificate hash is not included in this policy",
      "RuleExpressionType": "BuiltInAction",
      "Expression": "CheckCertificate()"
    }
  ],
  "UserCheck": ["*"],
  "MachineCheck": ["aDdMC3y_isged8ODDSnvRg"],
  "ApplicationCheck": ["*"],
  "DayCheck": [],
  "DateCheck": [],
  "TimeCheck": [],
  "CertificationCheck": [],
  "Extension": {
    "SubProcessCheck": ["*"],
    "minAiLikelihoodPercent": 90
  }
}
```

### Field Reference

<table><thead><tr><th width="300.54541015625">Field</th><th>Description</th></tr></thead><tbody><tr><td><code>PolicyName</code></td><td>Display name of the policy.</td></tr><tr><td><code>PolicyType</code></td><td>Policy type identifier. For this policy type, <code>AgenticAccess</code>.</td></tr><tr><td><code>PolicyId</code></td><td>Unique identifier assigned to the policy.</td></tr><tr><td><code>Status</code></td><td>Policy lifecycle state — <code>monitor</code>, <code>monitor &#x26; notify</code>, <code>enforce</code>, or <code>off</code>. Agentic Access policies default to <code>monitor</code>.</td></tr><tr><td><code>Actions.OnSuccess.Controls</code></td><td>The control(s) applied when the policy matches — for example <code>ALLOW</code>, <code>DENY</code>, <code>JUSTIFY</code>, <code>MFA</code>, <code>REQUEST</code>, <code>OPERATORAPPROVAL</code>. Multiple controls are additive (stacked); <code>ALLOW</code> and <code>DENY</code> cannot be combined with other controls.</td></tr><tr><td><code>Actions.OnFailure.Command</code></td><td>The action taken when a rule check fails. Empty (<code>""</code>) in Monitor contexts, where the policy observes without enforcing a deny.</td></tr><tr><td><code>NotificationMessage</code></td><td>Message surfaced to the end user when the policy applies.</td></tr><tr><td><code>NotificationRequiresAcknowledge</code></td><td>Whether the end user must acknowledge the notification before proceeding.</td></tr><tr><td><code>Operator</code></td><td>Logical operator combining the rule checks. <code>And</code> requires all rules to pass.</td></tr><tr><td><code>Rules</code></td><td>The ordered set of built-in rule checks evaluated for a match (user, machine, application, date, time, day, certificate).</td></tr><tr><td><code>Rules[].RuleName</code></td><td>Identifier of the individual rule check.</td></tr><tr><td><code>Rules[].ErrorMessage</code></td><td>Message recorded when the rule check does not pass.</td></tr><tr><td><code>Rules[].RuleExpressionType</code></td><td>Type of the rule expression. <code>BuiltInAction</code> for the standard checks.</td></tr><tr><td><code>Rules[].Expression</code></td><td>The built-in function evaluated for the rule (e.g. <code>CheckUser()</code>, <code>CheckMachine()</code>, <code>CheckFile(false)</code>).</td></tr><tr><td><code>UserCheck</code></td><td>User Collection scope. <code>["*"]</code> targets all users.</td></tr><tr><td><code>MachineCheck</code></td><td>Machine Collection scope. A collection identifier targets specific enrolled endpoints; <code>["*"]</code> targets all.</td></tr><tr><td><code>ApplicationCheck</code></td><td>Application Collection scope. <code>["*"]</code> targets all applications.</td></tr><tr><td><code>DayCheck</code> / <code>DateCheck</code> / <code>TimeCheck</code></td><td>Optional day-, date-, and time-of-day constraints on when the policy applies. Empty arrays apply no constraint.</td></tr><tr><td><code>Extension.SubProcessCheck</code></td><td>Scopes which sub-processes spawned by the agent the policy evaluates. Accepts a collection of specific applications (for example <code>cmd.exe</code>, <code>powershell.exe</code>) or <code>["*"]</code> to evaluate all sub-processes.</td></tr><tr><td><code>Extension.minAiLikelihoodPercent</code></td><td>The minimum AI-likelihood detection score (0–100) a process must reach for the policy to apply. In the example, the policy applies only to processes scoring 90% or higher.</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/endpoint-privilege-manager/policies/policy-types/agentic-access-policy.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
