# Agents: proposed agents and agent manifests

**Agents** is in the main sidebar, after Opportunities. It has 8 tabs: **Workspace** (it opens first: the builder on the last agent you opened, else the first proposed agent), **Saved agents** (the saved agents, with **New agent from an opportunity** and **Start from a person or task**), the agent governance tabs **Requests**, **Review queue**, **Issued agents**, **Rules** and **Audit** (since October 14, 2026), and **Business review** (the old Reviews tab). On a phone the tabs have short names: Build, Saved, Requests, Review, Issued, Rules, Audit and Business. Since October 13, 2026 the proposed agents are in **Opportunities › Proposed agents**: finding an agent is diagnosis, and Agents builds it. DutyGraph makes each proposal from the Company Repo, by code. DutyGraph does not run agents. An agent manifest is a file for the AI tools that the client already uses. The draft gives no access.

Status, October 8, 2026: the Agents pages are built on `matt/dev` (package A2 of the [agent manifest builder](../specs/AGENT-BUILDER.md)). They read the Agents server routes (package A1). When a page cannot read its data, it shows the server's message. It never shows example data in place of your company. No AI call makes a proposal, a marker, a limit or a policy. "Describe the agent" is Planned. It has no input in this version.


## The builder workspace (October 13, 2026)

Select **Agents** in the sidebar and the builder opens on the last agent you opened (else the first proposed agent). An agent also opens from **Opportunities** (the agent link under a Task Card, or Proposed agents) and from **Saved agents**. The page header is 1 row (Agents, the tabs, search), and the builder is one workspace:

- **1 bar at the top:** Your team (each person with a proposed agent; select a person to see their agents and the systems each one uses, and select an agent to open it), then the draft's state, **Save draft** and **Download .zip**. Under it, the Authority line (acts for, owner, limit, pauses, the authority check) opens to the full strip.
- **On the left:** Agent config, Instructions, Tools and connectors, Context, Human gates, Tests and Handoffs, each a section you open and close. A marker or a policy can only get tighter.
- **On the right:** the files for the AI tool, as the export writes them, with your unsaved changes applied: **Claude Code** (the subagent, skill and settings files), **Claude Managed Agents**, **OpenAI Agents** (the body of the OpenAI Agents API, beta, `OpenAI-Beta: agents=v1`), the **DutyGraph manifest** (JSON) and the **Sheet**. Each format has its README.md and GAPS.md. **Copy** copies a file.
- **Before it can run** lists the readiness checks and the gaps. Nothing there blocks the draft. Under it are **Governed access** and **Share the plan with <person>**.
- **Save draft** saves a version. **Download .zip** downloads the saved version of the format you are looking at (it saves first when there are unsaved changes).

The OpenAI Agents file: DutyGraph does not choose a model, so "model" says to set it. The OpenAI MCP tool has no setting to ask before it runs, so only the tools DutyGraph allows are listed; the README names each tool that stays out.

## Read the proposed agents

**Opportunities › Proposed agents** gives the answer first.

1. The first line counts the proposed agents, for example "2 proposed agents for Cobalt Industrial Supply. Each one acts for 1 named person, inside that person's access."
2. The next lines say how DutyGraph made them and how many Task Cards have a proposed AI mode.
3. Use the flow chips to show the agents of 1 work flow.
4. Each card shows:
   - the name and **for** the person who does the work, with the role and the **Owner**, who is accountable;
   - the systems that the Task Cards record;
   - **Proposed**: the AI mode on the Task Card, and **Limit by rule**: the highest mode that the rules allow. When the rules lower the mode, one line says why and names the step ("Lower than proposed: step 4 contacts the supplier.");
   - the steps where the agent pauses, and what it must never do;
   - the gaps, the past cases (0 of 3 until people give them) and the tools outside the person's access;
   - **Open template** or **Open draft**. A saved draft shows its version and its state (Fresh, Out of date or Broken). A draft agent that a person made for the same Task Cards shows as **Related draft**.
5. A **K1** or **K2** chip shows when a possible constraint on the Strategy page links to the agent. Agents and Strategy use the same numbers. Select the chip to open Strategy with that constraint in focus.

### Not proposed

DutyGraph does not invent authority. **Not proposed** lists each Task Card or possible constraint that code did not turn into an agent, with 1 reason. The heading counts the items that it shows. The Task Cards with "People only" are in a closed list with their own count.

| Reason | What it means |
| --- | --- |
| No accountable owner | Nobody owns the work. An agent needs 1 accountable person. |
| Conflicting accounts | People describe the work in different ways. |
| People only | The Task Card has no proposed AI mode. These are in a closed list. |
| AI not allowed | The Task Card does not allow AI. |
| Route: a change that is not an agent | Route chose a cheaper change first (a decision rule, a process change, training, a setting or an automation). |

Each reason has an ask: the person to ask and 1 question. On your own company, select **Draft the ask** to open it in the Discovery composer. Nothing is sent until you send it. The sample company does not send asks.

## Build a manifest

Select **Open template** or **Open draft**. The builder is 1 column, like a "Create agent" page, with a rail on the right for the readiness checks and the export. The fields fill from the Repo when the page opens. Nobody typed them.

The **Authority** strip stays at the top: who the agent **acts for**, the **Owner**, the **Scope** (each system with the person's access), the **Limit**, the steps where it **pauses** and the **Authority check** (how many tools are within the person's access).

1. **Starting point.** **Proposed by DutyGraph** shows the templates that DutyGraph made for this company from a person's role, duties and Task Cards. Select another template to open it. If you changed fields, the page asks "Replace 3 edited fields?" first. **Describe the agent** is Planned and has no input in this version.
2. **Agent config.** The name, the description and the model. DutyGraph does not choose a model: it shows "Not set · the client chooses" until you choose one. Acts for, Owner, Proposed and Limit by rule come from the Repo and you cannot change them here. Select **Raw** (or press **W**) to see the exact Repo file, read only. Each id in its frontmatter links to its file. Select **Rendered** (or press **R**) to go back.
3. **Instructions.** The Task Card steps, word for word. Each step has a marker that code proposes: **A** the agent does it, **S** it needs a recorded approval, **H** a person does it. A step that code cannot classify is H. You can make a marker tighter (A → S → H). You cannot make it looser. To change a step, edit the Task Card. Add **Notes for the agent** if the agent needs more words from a person.
4. **Tools and connectors.** 1 card for each system that the Repo records. Each card shows what the steps need, the person's access, the state (**Within access**, **Outside access** or **Access: Not found**) and the **Tool permissions**. Each operation has a policy: **Allow**, **Ask first** or **Off**. A looser policy than code allows is not available, and its tooltip says why ("The limit is set by the person's access."). **Request access** drafts an ask to the person who grants access to the system. On a tool with **Access: Not found**, the button says **Ask** and the name of that person. The ask is never sent automatically. DutyGraph holds no credential: the card names the person who provides it.

   Each card also has an **Access editor**: the access level of the role to the system (No access, Read, Write or Admin) and its source. Select **Save access** to record it. You need permission to edit records. **Client confirmed** needs an answer from the client to the access ask for that role and system. Without that answer, DutyGraph stores **Reported**. DutyGraph records the level only. It does not change access in the system. On the sample company the access values are fixed. **Never allowed (from the Task Card)** lists what the agent must never do.
5. **Context.** The Repo files that the agent may read: only files that the person's role may read.
6. **Human gates.** Each step where a person acts, and the person. "Backup Not found" means that the Repo names no backup person.
7. **Tests.** Cases that code makes from the stop conditions. Each one is labelled "Case from a stop condition · not a past case". The header says how many past cases exist (0 of 3 until people give them). Ask the person who does the work for 3 past cases.
8. **Handoffs.** The handoffs to and from other Task Cards, as context only.

Every filled field has a chip such as "from check-supplier-packet/task.md › Rule". Select it to open the file in the Repo. A field that you changed and did not save says "Edited by you · was: …". A saved change says "Edited by" the person who saved it, and the Repo value. A changed field has no Repo chip, because a person wrote the value. Select **Use the Repo value** to go back to the value from the Repo, then save.

### Readiness checks

The rail lists the checks that code makes: an owner is named, the approver is known, no open dispute, the client confirmed the Task Cards, the past cases and the authority check. A gap never blocks the builder or the export.

### Save a draft

Select **Save draft** (or press **⌘S** or **Ctrl+S**). A save that changes the manifest makes a new version: "Saved as v2 · 8 Oct 2026. The draft gives no access." A save that changes nothing keeps the version: "Nothing changed. The draft stays v2." If another person saved the manifest after you opened it, the page asks you to reload. If a marker or a policy is looser than code allows, the page names it and saves nothing.

DutyGraph also saves nothing when a Task Card holds an email address, a phone number or a value that looks like a secret. The message names the Task Card and the field (for example "Stop conditions"). Edit the Task Card, then save again. Your own words (the name, the description and the notes) cannot hold interview or answer words.

A save never writes over a draft agent that a person made. The save makes a new draft, and the builder lists the other draft as **Related draft**.

## Export a manifest

Select **Export manifest** (or press **E**). Choose 1 of 4 formats. Each one is "formatted for" its tool:

| Format | Files |
| --- | --- |
| Manifest sheet | `manifest.md`, for people to read. Select **Print the sheet** for a light page to print or save as PDF. |
| DutyGraph manifest JSON | `manifest.json` (`dutygraph.agent-manifest.v1`) |
| Claude Code folder | The subagent file, the skill file and a settings fragment |
| Claude Managed Agents JSON | The agent definition. It needs a model: choose one in Agent config first. |

Each format also has `README.md` and `GAPS.md`. Select a file in the tree to read it before you download. The preview shows the saved version, or the template when nothing is saved. Changes that are not saved are not in the preview. If your role cannot download exports, the preview shows the file names only. DutyGraph never fills a gap. It leaves the value out of the files for the AI tool and lists it in `GAPS.md`, with the person to ask. An export with gaps is labelled "Draft · 8 gaps". The download is the saved version, as a .zip file. If you have changes that are not saved, select **Save and download .zip**.

DutyGraph checks the files again before the download. It refuses an export that holds an email address, a phone number, a value that looks like a secret or interview words, and says which file holds it. A **Broken** manifest exports only the manifest sheet and the JSON. Review it and save it again before you export it for Claude Code or Claude Managed Agents.

DutyGraph does not run this agent. Load the file into the AI tool that your company uses.

## Saved manifests

**Agents › Saved agents** lists each saved manifest with its version, the person it acts for, the owner and the gaps. DutyGraph compares each cited Repo file on every read:

- **Fresh**: no cited file changed.
- **Out of date**: a cited file changed. Select **Show changes** to see the files. Open the manifest to see each field before and after, then save it again.
- **Broken**: a cited file was removed or withdrawn, or a cited person left. The files for an AI tool are not available until you review the manifest and save it again.

Select **Open** to open the builder, or **Export** to open the export.

## Share the plan with the person

Status, October 14, 2026: built on `matt/dev`, by private link only.

Under **Before it can run**, **Share the plan with <person>** sends the saved agent's plan to the person it acts for. Save the draft first: the plan is built from the saved version.

1. Select **Create a private link for <first name>**. The link is shown once and works for 30 days. Select **Copy link**, **Share** (the phone's share sheet, where there is one) or **Preview**. When the company's Resend email is set up, **Send by email** sends it for you.
2. The person opens the plan on their phone. It is labelled "Proposed plan · not deployed" and has 5 parts: **What we found**, **The plan**, **Your process today and with the agent**, **How you would operate it** and **What happens next** (the governed access status, read only).
3. The person answers **This looks right** or **Something's off**, with the parts that are off and a short note. Code removes contact details from the note before they send it. The answer is stored as understood.
4. The answer shows in the list of shared plans under the panel (version, when it was shared, whether it was opened, the answer), as an Inbox **Review** item and as an advisor notification. Select **Mark reviewed** when you have read it, or **Revoke link** to stop an open link.

The plan is built by code when you create the link and kept exactly as shared. Your role needs permission to edit records to share a plan. The person cannot open the plan from a DutyGraph sign-in yet; it is a link only. See [Run a company through DutyGraph](33-run-a-company.md), step 9.

## Business review

**Agents › Business review** holds the agent requests, the manifest drafts and the business review that were on the Governance page. They work as before, for every company. The old address `#governance` opens this tab.

## Governed access and the governance tabs

Status, October 14, 2026: the governance tabs work on the Wesco sample (`/app?sample=wesco`) and on any company of your own after **Set up governance**. A company without its packs (the Cobalt sample, a new client) shows "Governance is not set up for this company yet" on these tabs, with **Set up governance** for an advisor.

### Set up governance for a company

Open **Agents › Rules** and select **Set up governance** (`#gov/setup`; once set up, **Change packs** on the Rules tab). Load the 6 packs:

| Pack | How to load it |
| --- | --- |
| **Agent rules** | **Use the default agent rules**: 14 neutral rules, including the ceiling (an agent's scopes never exceed its owner's), an end date for every agent and AGT-12 "No agent approves work: approvals stay with people". Or upload your own pack (JSON) |
| **Segregation of duties** | **Use the default SoD pairs**: 12 generic conflicting pairs (create a vendor and pay it, enter and approve the same invoice …). A pair applies only when the catalog has scopes on both sides. Or upload your own |
| **Mitigating controls** | Add each control (id, name, owner role, **Agent-eligible**), then save. It can stay empty. Only an agent-eligible control lets a reviewer keep a conflicting scope for an agent |
| **System catalog** | **Use the catalog built from Task Cards**: the systems the Task Cards name, with scopes written `system/action:object`. Add systems and scopes, then **Save this catalog** |
| **Who holds which access** | **Choose a CSV file** or paste the access export, then **Preview**. The preview lists the matched people, the people not found in the company and the access that maps to no catalog scope; those rows are not loaded. Then **Load this export** |
| **Approval chain** | For Manager, Role owner, Internal Controls and IAM, choose a person from the company, or **Requester's manager** for the manager step. **Save the approval chain** |

Each load is a new version of the pack and is sealed on the hash-linked ledger. Each load also gives people PER- ids and Task Cards with an AI mode TSK- ids (**Assign registry ids** does it on its own). DutyGraph reads the access export as of the day it was exported; it does not connect to the company's identity or access system. Only an advisor sets up governance. A sample's packs are fixed.

On your own company, only the Task Card's owner can start an agent's access request, from their own DutyGraph sign-in, and each approver decides from their own sign-in. There are no personas outside the samples.

### The governance tabs

- **Governed access** in the builder, under **Before it can run**, shows when the agent's Task Cards map to the governance records. It shows the access request for the agent, or a suggestion, or **Start the access request** (only for the owner's own sign-in). On the sample the button reads **Start the access request as Aisha Bello (sample persona)**. The panel reads or starts a request. It never decides.
- **Requests** (`#gov/requests`): the governance overview, then each request. A request channel asks 1 question, then shows the proposal: each scope inherited, escalated or removed, with its rule. Select **Submit to the approval chain**.
- **Review queue** (`#gov/review`): the requests at your step. Each approver selects a decision and **Record the decision**. After the chain, **Record the issuance** on the issue screen. The gateway token shows once.
- **Issued agents** (`#gov/agents`): each issued agent. **Try an action** shows the gateway check: an allowed call passes, a call outside the rules is blocked.
- **Rules** (`#gov/rules`): the rule packs and the control library.
- **Audit** (`#gov/audit`): the Register, the Ledger (**Verify chain**) and the Auditor workspace.
- **Rules** › **Set up governance** or **Change packs** (`#gov/setup`): load or change the company's 6 packs (above).

On the Wesco sample, Okta, Entra, Saviynt, ServiceNow and Oracle are simulated, and the approvers are sample personas that you operate (**Acting as**). See [Run a company through DutyGraph](33-run-a-company.md), step 8.

## The Repo file

The Repo file of a saved manifest (`manifests/<slug>.md`) lists a permission only for a tool that a policy allows and the role's recorded access covers. `authority_ceiling` is the role that the agent acts for, and `accountable_role` is the owner's role. The stop conditions and the cases made from them stay in Agents. They are not in the Repo file.

## Other ways in

- **Strategy › Summary**: a possible constraint card shows **Proposed agents: N →** when an agent links to it.
- **Work Map › Value chain**: with the **Automation candidates** lens on, select **Open in Agents →**.
- **Work Map › Task Cards**: select a Task Card with a proposed AI mode, then **Make a manifest →** in the inspector. If code did not propose an agent for it, the page says why.

## The sample company

On the sample company (Cobalt Industrial Supply, fictional) each page shows 1 **Sample output · no AI call** chip, and the Proposed page and the builder end with a line that names the sample. The markers say "Proposed by code · sample". The access values are labelled "Reported · sample". Asks and Request access stay on the page and are not sent. The sample never calls an AI provider.

## What Agents does not do

Agents does not run, start or connect an agent. It grants no access and holds no credential. The builder records no approval: a draft is a proposal until the client's own process approves it. The governance tabs record decisions on the Wesco sample and on companies with governance set up; DutyGraph does not provision the agent in the company's identity system. Past cases and loading a manifest into an AI tool are Planned.
