magus v0.4.3 is out. See what's new
¶ View markdown source · ✎ Suggest an edit
2 min read

Human in the loop

magus keeps a person in the loop, the industry's term for the arrangement and the plainest account of what the tool is for. An agent proposes and does bounded work: it reads, drafts, runs the checks, and edits the paths a job hands it. A person decides at named points: what lands, what leaves the machine, what spends real money, and what changes the rules the agent works under. Where those points sit is the design. magus makes each one explicit, gives it a reason, and records it, so a decision is something a person made and can look up, not something that happened.

A point exists only where the person's judgment changes the outcome. Asking for everything trains the person to confirm everything, which the loop that keeps you able to notice names as the failure, and friction is the test for any new point. This prevents two quiet failures that look opposite: the agent that decides because nobody was asked, and the person who approves because everybody was. A default that acts without saying so is a third: a decision nobody made. No silent defaults closes it.

Enforced by

  • The guard's ask verdict puts a push at a commit no gate covers, or a run of a human_only target, in front of the person with the cost or the gate state attached, and refuses a leased worker outright, because a worker has no one to ask.
  • An agent's request for attention stays open until a person disposes of it.
  • A model tier, a guard rule's grade and a merge intent change only when a person edits the row that holds them, and that row is in version control.
  • The judgment pages list the points one by one, starting with Agents propose, humans dispose and Manual on purpose.

Good

A blocked agent waits until a person has read what it asks and disposes of it by typing its id:

magus session dispose <id>

Bad

on: pull_request_review
jobs:
  merge:
    steps:
      - run: gh pr merge --auto --squash

Every approval now lands the change, so the approval stops being a decision and becomes a keystroke the agent waits behind.

See also

designprincipleagentsjudgment
Last updated (2df714e8)
Glossary

Target

A named operation (build, test, ...) you invoke with magus run <target>; it may compose a spell's tool-native operations and depend on other targets. Target in full.

Op

A single tool-native command a target composes (long form: operation); the middle of the work hierarchy (Spell to Op to Target). Op in full.

CI

An ordinary target you compose yourself with ctx.needs; magus does not hardcode its stages. It is the anchor magus affected ci keys off, and ci strips the rw charm. CI in full.

Agent

A model working through an agent host such as Claude Code, Codex, Cursor or OpenCode. magus treats an agent as one more caller of its CLI, MCP tools and console, held to the same checks as a person. Agent in full.

Tool

An action a model can call through its host: a name, a description, a typed input and a result. magus serves its tools over MCP, each a read of the workspace model or a run of the CLI it already has. Tool in full.

Session

An agent host's conversation, by the id the host delivers to its hooks. magus never mints one: a record with no session is unattributed, and the OS user it carries says whose account ran it. Session in full.

Dispose

The human act of closing an attention request: a judgment rendered, recorded with who and why. Distinct from resolving a review thread or a merge conflict: a disposition answers a request; it does not merge anything. Dispose in full.

Job

The unit of delegated work, and one row of the job store: what an orchestrating agent handed out, with its goal, the checkpoint it was cut against, the paths it may write or must not touch, and the one check it runs. A job's holder is either a session, for work an orchestrator handed out, or the daemon, for its own maintenance. The store records; the agent guard is what reads those facts back when grading a write. Job in full.

Run

One target executing under one magus invocation, such as magus run test web or magus affected ci. A run keeps its captured output behind an output reference. Every magus run is a run whether or not any job asked for it; see Job for how the two relate. Run in full.

Lease

The grant a holder takes on a job: the write and read paths that job declared, enforced in the checkout that took it with magus job exec. A job is the piece of work; a lease is permission over it. Lease in full.

Conventions

This page uses none of the site's convention markers. The full set is on the conventions page.