# Coding agent management and work tracking | Oxagen

Source: https://oxagen.sh/product

The whole product on one page

# Product overview

Oxagen connects coding-agent runs to the people, work items, code changes, costs, and outcomes behind them. Engineering teams use that record to direct supported agents, share reviewed steering and toolbelts, enforce controls on mediated actions, and improve how the next task gets done.

[Follow work from its source to its outcome](https://oxagen.sh/#demo)

An illustrative work item with its Done Checklist approved, a run that opened a pull request, required checks read on the head commit, a person's acceptance, and the merge. Deployed is a separate state the figure leaves unreached.

One work item and its states

1.  Done Checklist approvedReached
2.  Pull request opened by the runReached
3.  Required checks read on the head commitReached
4.  Accepted by a personReached
5.  MergedReached
6.  DeployedPending

Illustrative Work item states from the Work record and its docs

01

## On this page

*   [Work](https://oxagen.sh/product#work)
*   [Mandates](https://oxagen.sh/product#mandates)
*   [Runs](https://oxagen.sh/product#runs)
*   [Setup](https://oxagen.sh/product#setup)
*   [Supported agents](https://oxagen.sh/product#supported-agents)

02

## Work

A reviewer opens a pull request and asks why it exists. The answer sits in a tracker, in a run on someone's laptop, and in a checklist nobody wrote down. Oxagen puts them on one work item.

Triage suggests a priority and a first Done Checklist, the short list of things a reviewer checks. A person approves the checklist and sends the item to one agent. When the run ends, the item shows the pull request, its head commit, and the checks the base branch requires on that commit.

Accept records a person's acceptance of that head commit and merges nothing. The item is done once a person has accepted it and the pull request has merged, in either order. A pull request closed without merging is not done.

An illustrative work record with its source, Done Checklist progress, the run that worked on it, its pull request, the required checks, and the open acceptance.

One work item

Source

GitHub issue #218

Done Checklist

5 items approvedDone

Run

Claude Code run with its recorded costDone

Pull request

Opened on the linked repositoryDone

Required checks

Passed on the head commitDone

Acceptance

Waiting for a personOpen

Illustrative Fields from the Oxagen work record

03

## Mandates

For a call routed through Oxagen, a rule your team wrote allows it, denies it, or routes it to a named person. For a mediated connection, Oxagen uses the connection credential on the agent's behalf, and the agent does not receive it. In observe mode, Oxagen records what the policy would decide and lets the call go ahead.

An agent's identity, permissions, toolbelt, steering, and budget together make up its mandate. Oxagen checks those terms on calls routed through it and records each decision, so the people who set them can see how they applied.

The Bug fixer agent's mandate. Security owns its access, Finance owns its budget of $20 a run with $11.64 spent, Engineering owns its tools, and Oxagen keeps the record of 412 frames. A request to read the repository is allowed by a rule.

One agent's mandate

**Bug fixer**Mandate billing-fixes

*   **Access**SecurityAsks for GitHub when the task needs it
*   **Budget and rules**Finance$11.64 of $20 this run
*   **Equipment**Engineering`get_issue``create_pull_request``run-tests`
*   **Record**Oxagen412 frames recorded

Request**Read oxageninc/product**Allowed by rule repo.read

Illustrative Each clause names the team that owns it

04

## Runs

An agent that works for an hour leaves a scrollback nobody reads. Oxagen records the run while the agent works: each prompt, each tool call and the rule that answered it, the files git reports as changed, and the cost of each model call it carried.

Know whose authority is behind the action. The record names the agent that asked, the person it acted for, the rule that answered, and who approved the call when a person was required, beside its result and cost.

The record holds only what the agent's computer reported, and the [coverage statement](https://docs.oxagen.sh/docs/security/record-coverage) names what each harness reports. Cursor's model calls do not pass through Oxagen, so their cost is not recorded.

A release agent's run on Claude Code. It read the repository, asked to push to the release branch and waited for Sam Chen to approve, edited the release notes, opened a pull request, and ended with its record locked. Each step names the rule that answered it and what it cost, $2.84 in all.

One run record

**Cut the 4.11.0 release notes**Release agent run by Priya Shah**$2.84**Cost so far

1.  09:12**Run started on Claude Code**Mandate release. Operator Priya Shah.
2.  09:14**Read 22 files and 31 merged pull requests**Allowed by rule repo.read+$0.62
3.  09:21**Asked to push to release/4.11**Routed to Sam Chen by rule release-branch+$0.04
4.  09:24**Sam Chen approved the push**Answered in 3 minutes
5.  09:26**Edited docs/releases/v4.11.0.mdx**Allowed by rule docs.write+$1.31
6.  09:31**Opened pull request #8119**4 of 4 checks passed on the head commit+$0.87
7.  09:33**Run ended after 37 steps**Oxagen locked the record

**Locked at 09:33**Locked means any change after this point shows.`sha256:f2c9…34ef`

Illustrative A run from its first step to its locked record

05

## Setup

1.  **Install the CLI**
    
    Install the Oxagen app on the machine the agent runs on. It puts the oxagen command on your path.
    
2.  **Enroll the agent**
    
    Run `oxagen agent enroll --harness claude-code` or name Codex, Cursor, or Stella. Enrollment writes the harness's hooks and gives the machine its own identity in the workspace.
    
3.  **Confirm the first run**
    
    Start the agent and open Runs. The run appears while the agent works.
    

06

## Supported agents

Controls Oxagen applies to each supported agent
| Control | Claude Code | Codex | Cursor | Stella |
| --- | --- | --- | --- | --- |
| Record each tool call | Yes | Yes | Yes | Yes |
| Let a rule allow or deny a tool call | Yes | Yes | Yes | Yes |
| Send a tool call to a person | PartialClaude Code asks you on your own machine. | NoOxagen denies the call and says why. | NoOxagen denies the call and says why. | PartialStella holds the call for your approval. |
| Record model calls and their cost | Yes | Yes | NoCursor sends model calls to its own servers. | PartialFor Anthropic models. |
| Send a message to a running agent | Yes | Yes | PartialDelivered at the end of the turn. | Yes |
| Stop a run | Yes | PartialOxagen blocks the next tool call and ends the model call in progress. | PartialOxagen blocks the next tool call. | Yes |

07

## Next steps

*   [Mandates](https://oxagen.sh/product/mandates)
*   [Runs](https://oxagen.sh/product/runs)

## Related pages

*   [
    
    ### Mandates
    
    The terms an agent works under
    
    ](https://oxagen.sh/product/mandates)
*   [
    
    ### Runs
    
    The record each agent run leaves
    
    ](https://oxagen.sh/product/runs)

## Product walkthrough

Bring one piece of work and see how its runs, controls, and record fit together.

[Follow work from its source to its outcome](https://oxagen.sh/#demo)
