Product design

Agent Experience: the third design lens, and why it is a security question

For two decades, product teams have shaped software through two lenses. User experience asks how a person feels moving through an interface. Developer experience asks how quickly an engineer can understand an API and get something working. Both assume a human at the other end — someone who can read between the lines, ask a colleague, or interpret a half-written error message.

That assumption no longer holds. A growing share of the traffic hitting modern products is not a person at a keyboard. It is an AI agent reading documentation, choosing a tool, filling in arguments, and acting. The lens this requires has a name: Agent Experience, usually shortened to AX.

What Agent Experience means

Agent Experience is how easily and safely an autonomous software agent can discover what your product does, understand how to use it correctly, and operate it without a human supervising each step. It covers your documentation, your API surface, your error messages, your published content, and — critically — the boundaries you enforce on what an agent is allowed to do.

AX is not a rebrand of DX. An engineer with good instincts can recover from a vague error, spot that a field is obviously a date, or infer that two endpoints are meant to be called in sequence. An agent has no instincts. It has text, a schema, and a scoring function. Ambiguity that a developer absorbs in a second becomes a retry loop, a wrong call, or a fabricated parameter.

UX, DX and AX side by side

LensAudienceOptimises forFailure mode
User experience (UX)A human using an interfaceClarity, flow, visual hierarchy, forgiveness of mistakesThe person gets confused and gives up
Developer experience (DX)An engineer integrating your productReadable docs, sensible defaults, fast first call, good errorsThe integration stalls and the engineer picks a competitor
Agent experience (AX)An autonomous model calling tools on someone's behalfMachine-readable descriptions, stable identifiers, deterministic errors, explicit permission boundariesThe agent guesses, loops, leaks data, or takes an action nobody sanctioned

Three shifts already underway

From SEO to being cited inside an answer

Search optimisation was built around a ranked list of blue links and a human deciding which to click. Increasingly the answer is generated, and the question that matters is whether your explanation is the one the model quotes. That rewards a different kind of writing: self-contained pages that do not assume the reader arrived from somewhere else, explicit definitions near the top, tables and lists a model can lift cleanly, structured data that states what the page is, and honest scoping — because a page that overclaims is a page a careful model will hedge away from or contradict.

From human-readable docs to agent-operable docs

Documentation written for agents looks different from documentation written for people, though the best examples serve both. Every endpoint carries a machine-readable description of what it does and when to use it, not just its parameters. Identifiers are stable, not renamed between versions. Errors say what went wrong and what to do instead, in a form a model can act on rather than apologise about. Examples are complete and runnable, because an agent will copy them literally.

From ease of use to ease of safe use

This is the shift most teams underweight. Everything that makes a product easy for an agent to operate makes it easy for a manipulated agent to abuse. A clear tool description is also a clear target. A permissive API is permissive to whoever holds the credential, including an agent that has just read a poisoned web page or a shared message from another agent in the same workflow.

Why AX is a security discipline, not just a design one

Agents consume untrusted text and act on it. That single property collapses the usual separation between content and command. Documentation, retrieved web pages, ticket bodies, file contents and the output of other agents can all carry instructions, and an agent that treats text as guidance will sometimes follow them. This is the mechanism behind prompt injection and it is why the OWASP LLM Top 10 places it first.

Good agent experience therefore includes the boundary as a designed feature, not an afterthought. An agent should be able to tell, without guessing, which tools it may call, which destinations it may reach, how large a request may be, and how often it may act. Those limits belong outside the agent, where the agent cannot rewrite them, and they should produce a clear, deterministic refusal when crossed — a refusal is better AX than a silent success on the wrong thing.

A practical AX checklist

Where GuardBotAI fits

GuardBotAI is the enforcement half of that checklist. Requests from your agents pass through the GuardBotAI gateway before they reach a model or a tool. Each one is judged against rules you write — blocked phrases, permitted tools, size limits, enforcement mode — and is blocked, stripped of secrets, or forwarded, with the decision written to a tamper-evident record you can inspect later.

Every guardbot also runs inside three containment layers: Practice, where nothing is forwarded; Leashed, where one approved destination and an allow-list apply under tight caps; and Live. Breakout signals — an unapproved destination, an unlisted tool, a burst past a cap, or the same blocked pattern appearing across several of your agents within minutes — drop a guardbot a layer immediately and alert you. The detail is in agent sandbox escape.

We hold no external security certification today, and we do not claim one. What we publish instead is behaviour you can test: run the free security scan against your own agent code, score your AI policy with the policy check, or create a guardbot and send it real traffic.

Documentation for agent developers

GuardBotAI is an OpenAI-compatible endpoint. If your agent already speaks the chat completions format, you change the base URL and add one header. Nothing else about your code changes.

Endpoint and headers

POST https://guardbotai.com/api/public/gateway/v1/chat/completions

Authorization: Bearer <your GuardBot key>     # gbk_... from the Deploy panel
x-guardbot-upstream-key: <your model key>     # only needed above Layer 1
Content-Type: application/json

The body is the standard chat completions body: model, messages and optionally tools. On an allowed request the upstream response is returned unchanged, so existing SDKs keep working.

Minimal example

const res = await fetch(
  "https://guardbotai.com/api/public/gateway/v1/chat/completions",
  {
    method: "POST",
    headers: {
      "content-type": "application/json",
      authorization: `Bearer ${process.env.GUARDBOT_KEY}`,
      "x-guardbot-upstream-key": process.env.OPENAI_API_KEY,
    },
    body: JSON.stringify({
      model: "gpt-4o-mini",
      messages: [{ role: "user", content: userInput }],
      tools: [{ type: "function", function: { name: "search_docs" } }],
    }),
  }
);

if (res.status === 403) {
  const { guardbot } = await res.json();
  // guardbot.reason === "blocked_by_policy"
  // guardbot.rule_ids, guardbot.risk_score, guardbot.event_hash
}

Responses your agent must handle

StatusMeaningWhat an agent should do
200Allowed. At Layer 1 the body is a sandbox notice, not a model answer.Continue. Read the sandbox label before treating it as a real answer.
401Unknown, revoked or expired GuardBot key.Stop and surface a configuration error. Do not retry.
402No active plan for traffic above Layer 1.Stop and tell the operator. Retrying will not help.
403Blocked by policy. guardbot.rule_ids says which rule.Do not rephrase and retry — that is what an escaping agent does. Return the refusal to the caller.
429Rate or quota limit reached.Back off exponentially; do not fan out across keys.
503Containment demotion, emergency containment, or a fail-closed refusal when the record could not be written.Halt. A human has to act. Repeated calls deepen the containment signal.

Best practices for agents that run behind GuardBotAI

A full recorded run of these responses, including a real automatic layer drop, is on the live demo walkthrough, and you can generate a starting rule set with the policy builder.

Build a policy for your agent, in plain language

Agent experience is not only about documentation — it is about how quickly a buyer can express what their agents must never do. This builder runs entirely in your browser: answer the questions, get a policy you can paste into a GuardBot, and read an honest account of what each rule stops and what it costs you. To watch the policy refuse a real attack, run it in the Shield console.

One phrase per line. Project names, internal terms, client names.

Comma or line separated. Leave empty to allow any tool (not recommended).

Do you want to block, or watch first?
Which containment layer should it start on?

Your GuardBot policy

{
  "maxRequestChars": 8000,
  "strict": true
}

Enforcement mode (enforce) and containment layer (1) are set on the guardbot itself in the control center, not inside the rule set.

What each rule actually does

Built-in threat rules (always on)

Stops: Prompt injection, jailbreak phrasing, instruction override attempts, and exposed credentials such as API keys and tokens.

Trade-off: None to configure. They run on every request before anything is forwarded.

No tool allow-list

Stops: Nothing. Your agent may call any tool it names.

Trade-off: This is the single largest gap in most policies. Naming the tools your agent is allowed to use is the highest-value rule you can add.

Request size ceiling (8,000 characters)

Stops: Oversized requests, which are how long documents smuggle hidden instructions and how runaway loops burn spend.

Trade-off: Legitimate long documents will be refused. Raise the number if your workflow genuinely needs it.

Strict mode on

Stops: Anything the engine merely finds suspicious is treated as a block rather than a warning.

Trade-off: Expect some false positives early. Review the blocked events in the control center and loosen deliberately.

Enforcement mode: Enforce

Stops: Matched requests are refused with an error before a model or tool is reached.

Trade-off: Your application must handle a refusal response gracefully.

Containment layer 1

Stops: Everything. Nothing is forwarded at all — requests are judged and recorded only.

Trade-off: No real answers come back. This is the right place to start and requires no paid plan.

Frequently asked questions

What is Agent Experience (AX)?

Agent Experience is how easily and safely an autonomous software agent can discover, understand and operate a product. Where user experience optimises for a human reading a screen and developer experience optimises for an engineer reading documentation, agent experience optimises for a model reading structured text and calling tools without a human in the loop.

How is agent experience different from developer experience?

A developer can infer intent from a screenshot, ask a colleague, or retry after reading a vague error. An agent cannot. It needs explicit, machine-readable descriptions, stable identifiers, deterministic errors that state the remedy, and permission boundaries it cannot accidentally cross. Good developer experience helps agent experience, but it does not guarantee it.

Does AX replace SEO?

No, it extends it. Search engine optimisation targets a ranked list of links for a human to click. Agent and LLM visibility targets whether your content is cited inside a generated answer. That rewards self-contained explanations, plain definitions, tables, structured data and honest scoping, because those are the parts a model can lift and attribute without risk.

What are the security risks of designing for agents?

Anything you make easy for an agent to use, you make easy for a compromised or manipulated agent to abuse. Documentation can carry injected instructions, tool descriptions can be poisoned, and an agent that is permitted to call an endpoint will call it regardless of intent. Agent-friendly design has to arrive with runtime enforcement: allow-listed tools and destinations, size and rate ceilings, and an auditable record of every decision.

How does GuardBotAI relate to agent experience?

GuardBotAI is the enforcement half of agent experience. Requests from your agents pass through the GuardBotAI gateway before they reach a model or a tool, are checked against your own rules, and are blocked, stripped or forwarded with the decision written to a tamper-evident record. That gives agents a predictable, well-defined boundary instead of an implicit one.