Protective Boundaries

Protective Boundaries let app owners set alert baselines and users tighten protection on individual agent connections. Tightening applies immediately. Weakening requires a human to confirm the exact change with a user-verified passkey on AgentAdmit's hosted page.

Choose the control for the job

ControlWhat it does
Granted scopesLimit which actions a connection may use.
Call ceilingsLimit verified calls per connection or scope group, daily or over the connection lifetime. These are call counts, not money limits.
Alert thresholdsNotify when configured behavior thresholds are crossed.
Optional kill switchRevoke on eligible deterministic alert thresholds. Revocation stops subsequent verification; it does not undo a call already allowed.
Confirm each timeRequire a fresh hosted human confirmation for each use of an owner-marked scope. See the App Owner Guide.

The kill switch is available for volume spikes, burst detection, failed-scope probing, and stale-connection reactivation. Boundary-deviation alerts are always review-only: they flag behavior for a human to assess, never automatically revoke based on a judgment about intent. Declared purpose and user intent are records for that review, not machine-enforced rules.

Open the hosted protections page

Your backend first authenticates the user and checks that the requested connection belongs to that user. AgentAdmit authenticates your app credentials; it does not replace this user-ownership check in your app.

Create a connection-scoped session from your backend:

curl -X POST https://agentadmit.com/api/v1/protection-sessions \
  -H "Authorization: Bearer $AGENTADMIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connection_id":"conn_EXAMPLE","return_url":"https://your-app.example/agent-access","expires_in":3600}'

The 201 response contains session_id, session_url, and expires_at. Open session_url for the signed-in human. Treat this link as a bearer credential: keep it out of logs and analytics, and do not expose it to unrelated users or agents.

Supply exactly one of connection_id or app_id. App-wide sessions using app_id require the app owner's AgentAdmit dashboard session; an API key cannot create an app-owner session. Optional return_url and cancel_url are absolute URLs. expires_in is 300 to 86,400 seconds, default 3,600.

What happens on the page

  1. The human reviews the effective protection settings and proposes changes.
  2. AgentAdmit compares the proposed settings with the current effective configuration. Connection settings cannot weaken the app baseline.
  3. Tightening applies immediately. A weakening change is frozen for review and requires a passkey assertion over the exact change commitment. Registering a passkey alone does not apply the change.
  4. If the underlying configuration changed meanwhile, the write is refused and the human must review the latest settings. Applied changes are recorded on the consent trail.

The hosted page handles the ceremony. Do not build an app-native replacement or let an AI complete the human-confirmation step.

API-key updates to alert configuration are tighten-only. A weakening attempt returns 403 weakening_requires_human; opening the hosted page is the supported path for human review.

Read the effective settings

GET /api/v1/connections/{connection_id}/protections returns connection_id, configs, bounds, usage, and hosted_session_endpoint. It is read-only and requires the developer's dashboard session or an app-linked API key.

Use it to display current settings and usage in your app. Re-fetch after returning from the hosted page rather than trusting return-URL parameters as proof of a successful change.

Evidence and notifications

Consumer-tier evidence records user verification and a signature over the exact commitment. It does not prove that the person read or understood the screen, and an unattested synced passkey is not hardware-attested evidence. The hosted session freezes the app's configured evidence tier when it is created.

AgentAdmit sends app-owner alerts through configured delivery channels. Your app is responsible for notifying its end users. See the App Owner Guide and Audit Export guide.