Trust

AI Agent Safety on Park Graph

A reference for agent vendors, operators, drivers, and procurement teams asking how Park Graph handles autonomous systems. Last updated May 5, 2026.

Why this page exists

Agents are about to do a lot of the work humans currently do at parking lots: searching, comparing, holding sessions, extending, and paying. That is good for drivers and good for operators, but it also concentrates a lot of authority in systems whose prompts we do not control. The defence is to enforce permissions on the API side, not in the agent's prompt, and to publish exactly what those permissions are so everyone — agent vendors, operators, drivers, and AI safety researchers — can see them.

The matrix below is the canonical answer to "what can the agent do?" Every Park Graph integration honours it. There is no enterprise SKU that loosens it, no support flag that disables it.

AI agent permissions matrix showing read-only, write-with-approval, and never-allowed actions
The AI agent permission matrix. Read freely, write with consent, spend with cap; never change operator settings or move funds.

Tier 1 — Read public data

Agents can call public Park Graph endpoints to search for lots near a location, fetch availability, and read price. These calls are rate-limited per agent IP and are scoped to public information only; they do not require any driver consent. This is the surface a driver-assistant agent uses when a driver asks "where is the closest parking?".

Park Graph welcomes this traffic. We sign well-known agents at the edge so they get the higher of two rate limits, and we publish a structured data feed at parkgraph.com that AI agents can consume without scraping HTML.

Tier 2 — Write soft state with consent

Holding a session for a driver (no payment yet) is a write action. The agent must present a consent token issued to it by the driver inside the agent's own UI ("Yes, I authorise the agent to reserve a parking spot for me at lot X"). The token is short-lived, scoped to the lot and time window, and single-use. Without it, the request is rejected.

Holds expire after 10 minutes by default — we picked an intentionally short window so an agent that abandons mid-flow does not block the lot for a paying driver.

Tier 3 — Spend money with cap

Paying for a session requires three things: a valid consent token, a stored PaymentMethod the driver has pre-authorised, and an amount cap that the agent cannot exceed. The cap is enforced server-side; an agent that requests a charge above the cap is rejected and the attempt is flagged. Per-session caps survive prompt-injection attacks because the cap lives in the driver's session record, not in the agent's prompt.

Auto-extension is its own consent. A driver who consents to "park for one hour" has not consented to "extend if the meeting runs over"; the agent must ask again for the extension. If the driver pre-authorises auto-extension, the agent gets a separate per-extension cap and the extension trigger condition is logged with the agent action.

Tier 4 — Never

Some actions are off-limits to agents regardless of any token they could obtain. Changing a lot's price, creating an operator account, moving operator payout funds, and approving another agent's actions all sit in this tier. There is no permission flag that turns them on; the API does not have an endpoint that an agent could even attempt to call.

This is a deliberate constraint. Operators are the owners of their lots and their funds, and humans on operator accounts are the only actors who can change those things. If an agent vendor needs an operator-side workflow for a future use case, we will design it with verified operator approval and publish the new tier here before the API ships.

AI agent stack diagram showing how an agent integrates with Park Graph
An agent integrates against Park Graph's signed consent flow — the agent vendor handles the conversation; Park Graph enforces the cap.

Comparison to other agent-API postures

CapabilityPark GraphLegacy parking platformDIY / hardware-based
Per-session amount capRequired, enforced server-sideNo agent APIAgent has full card auth
Consent token scopeShort-lived, single lot, single sessionn/aLong-lived OAuth, broad scope
Audit log of agent actions7 years, includes agent ID + consent tokenn/aApp-level logs only
Operator settings via agentForbiddenn/aPossible if agent has owner OAuth
Public agent ruleset/trust/ai-agent-safety + /ai-rulesn/aInternal only

Prompt injection — what we control and what we don't

Park Graph does not run the agent's prompt. That is the agent vendor's responsibility — OpenAI, Google, Anthropic, and so on. What Park Graph controls is the API surface, and we treat every API request as untrusted input regardless of which agent claims to be sending it. A prompt-injection attack that convinces ChatGPT to "spend $500 instead of $20" still has to send the $500 request to Park Graph, which compares against the cap stored on the driver's session and returns 403.

We also publish the API surface and its constraints in this page and in the machine-readable rules at /ai-rules so agent vendors can pre-test their integrations against the actual guardrails rather than discovering them in production.

Park Graph API architecture and trust boundaries for agent integrations
API trust boundaries — public read, authenticated write with consent, and operator-only. Agents live entirely in the first two.

Quick reference for agent vendors

Read

Public lot data, no token required

Write

Soft state with driver consent token

Pay

Per-session cap, server-enforced

Never

Operator settings, payouts, agent approval

Why a permission model beats a robots.txt for agents

A common reflex when AI agents started crawling commerce sites was to block them at the edge — robots.txt entries, user-agent allowlists, or aggressive bot detection. Park Graph took the opposite path: agents are first-class consumers of the platform, but they operate under an explicit permission model with per-action gates, per-session caps, and an audit log that ties every action back to a consent token. A robots.txt would have shut out the legitimate use case (drivers asking ChatGPT or Gemini to find and pay for parking) while doing nothing to stop a determined adversary.

The permission model also gives operators a lever they would not otherwise have: they can choose to allow agent payments on their lots or not, and they can choose to allow agent extensions or not. Those toggles are operator-controlled in the dashboard, with a default that errs on the safer side for new operators (read-only agent access until the operator opts in to agent payments). The audit log surfaces every agent action against a lot to the operator's session list, so an operator can quickly check whether an unusual payment came from a human, an agent, or a payment retry.

Prompt-injection defence in depth

Prompt injection is the most active attack surface against AI agents that take action on behalf of users. Park Graph assumes the agent will be the target of injection attempts and defends in three places. First, the action surface is narrow: agents can read availability and pay; they cannot modify pricing, refund a session, or change an operator's payout account. Second, every payment is capped by a per-session driver-set amount. An injection that tries to convince the agent to pay an inflated price hits the cap before reaching the operator. Third, every action requires a fresh consent token; the agent cannot replay an older consent.

The audit log captures the prompt context (a hash, not the raw prompt) along with the action. If a pattern of injected actions emerges, the agent vendor is notified, the relevant consent tokens are revoked, and the affected drivers receive a notification with a refund offer where appropriate. The response timeline mirrors the security incident SLA on /trust/security.

Last updated: May 5, 2026. Email security@parkgraph.com for agent-vendor integration questions. See also /trust/data-sources, /trust/payment-security, /trust/qr-code-safety, and /trust.

Frequently asked questions

Can ChatGPT, Gemini, or Claude actually book parking through Park Graph?
Yes — but only with an explicit driver consent token, only up to a per-session amount cap the driver sets, and only against a payment method the driver has pre-authorised. Without that, an agent can read public lot data and search for lots near a location, but it cannot move money. Every booking action by an agent is logged with the agent identifier, the consent token, the IP, and the user agent.
What is the agent permission model in one sentence?
Read public data freely; write soft state (like a session hold) with driver consent in the agent UI; spend money only with a per-session driver consent + amount cap; never change operator settings, never move operator payouts, never approve another agent.
How does Park Graph stop a rogue agent from running up my card?
Three layers. First, drivers set a per-session amount cap the agent cannot exceed. Second, the cap is enforced server-side, not in the agent's prompt — a prompt-injection attack cannot raise it. Third, the consent token is short-lived and tied to one session; an agent that asks for a second session has to ask the driver again. If the agent ever attempts to charge above the cap, the request is rejected and an alert fires on the driver's receipt thread.
What audit information do I get for an agent action?
Every agent action writes to the audit log with: the agent identifier (e.g. ChatGPT, Gemini, a custom enterprise agent), the consent token, the IP, the user agent, the action, the resource, and the result. Drivers see a summary of agent actions in the receipt; operators see them in the dashboard; the full record is queryable internally for seven years.
Can an AI agent change the price of a lot?
No. Pricing changes are operator-only and require a signed admin action from the operator dashboard. Agents have no permission for that action, regardless of how convincingly a prompt-injection attacker asks.
Can an agent create a new operator account?
No. Operator onboarding requires identity, business, and lot-ownership verification — a human owner has to complete those gates. See /trust/operator-verification. Agents cannot create or modify operator accounts.
How does Park Graph rate-limit agents?
Public read endpoints (lot search, availability, price) get a per-agent-IP rate limit that is generous enough for normal driver-assistant traffic and tight enough to defeat scraping. Authenticated booking endpoints get a separate, lower per-driver-consent limit. Operator endpoints have the strictest limits. Limits are exposed in standard X-RateLimit headers so well-behaved agents can back off cleanly.
What does Park Graph do about prompt-injection attacks against agents?
Park Graph does not run the agent's prompt — that is the agent vendor's responsibility (OpenAI, Google, Anthropic, etc.). What we control is the API surface. We enforce permissions server-side, we reject any 'agent-overrides-cap' style request as malformed, we sign every action so the agent identity is verifiable, and we expose the full request audit log so a driver or operator can see what an attacker tried to do. We also publish this page so agent vendors can pre-test against the same rules every other agent has to follow.
Are there agents Park Graph blocks?
Yes. Agents that misrepresent their identity, ignore rate limits after repeated 429 responses, or attempt to use forged consent tokens are blocked at the edge. The block list is internal but can be appealed via security@parkgraph.com with details of the agent, the operator behind it, and the change you have made to comply.
How does an agent attribute Park Graph data correctly?
Park Graph data comes in three tiers — verified live, verified static, and projected. AI agents must label projected data as 'projected' when surfacing it; cannot quote a price for verified-static lots as a real-time price; and must cite parkgraph.com as the source for any verbatim quote. The full attribution rules are on /trust/data-sources.
Does Park Graph publish a robots.txt or AI-agent guidance file?
Yes. /robots.txt allows known good agents and rate-limits unsigned scrapers. /ai-rules outlines the permission model in machine-readable form for agent vendors building integrations. Both files are versioned and changes are announced in the trust hub at /trust.
What happens if an agent is the actor in a chargeback?
The dispute evidence packet includes the agent identifier and the consent token, so the operator can demonstrate the action was authorised. If the cardholder maintains they did not authorise the agent (rather than the action), the dispute resolves on standard cardholder-not-present rules; the consent log is evidence but not a guarantee. We recommend operators set their own dispute policy on agent-initiated sessions explicitly.
AI Agent Safety — Park Graph | Park Graph