The problem

The client is a software company with around 4,000 employees and a twelve-person IT service desk. Most of the desk's volume was repetitive: access requests for internal applications, password and MFA resets, software installation requests, distribution list changes, and "how do I" questions. Median time to resolution for these was several hours, not because they were hard but because they waited in a queue behind one another. The desk wanted an agent that could actually complete this work, not a chatbot that links to knowledge base articles.

What we actually did

Tools first, prompts second

We started by defining eleven narrow tools the agent could call, each wrapping an existing admin API: look up a user, check group membership, request application access, trigger a password reset flow, reset MFA enrollment, queue a software install through the device management system, and so on. Each tool validates its inputs, enforces its own permission rules, and returns a structured result. The agent never receives broad admin credentials; it can only do what these tools allow.

A risk tier on every action

Every tool is assigned a risk tier. Low-risk actions, such as looking up information or installing pre-approved software, run immediately. Medium-risk actions, such as granting access to an application, route to the requester's manager for one-click approval in chat. High-risk actions, such as anything touching admin groups or finance systems, always create a ticket for a human engineer. The agent explains which path it took and why.

Evaluation on replayed tickets

Before launch we replayed 1,200 historical tickets through the agent in a sandbox with mocked tools and scored whether it picked the right tool sequence, asked for the right approvals, and correctly escalated what it should not handle. We tuned tool descriptions and the system prompt against this set until wrong-tool and missed-escalation rates were near zero, and we rerun it on every change.

A design decision worth calling out
We gave the agent no general-purpose "run a script" or "call any API" tool, even though it would have let it handle more tickets. Every capability is a named, reviewed tool with its own permission check. Coverage grows by adding tools deliberately, which keeps the security review tractable.

Challenges and tradeoffs

Results

Three months after launch, the agent resolves 64% of tier-1 requests end to end with no human touch, with a median time to resolution of about four minutes. The desk redirected the recovered hours toward a device refresh project that had been deferred for a year. There have been no privileged actions taken without the required approval, which was the security team's condition for launch.

What we'd do differently

We would instrument the "agent escalated to a human" path more heavily from day one. Those escalations are the best source of candidates for the next tool to build, and we initially logged them with too little detail to rank them.