Guide: Coding agent
muaz ships a coding agent tuned for real engineering work: it reads code with
scoped shell commands, makes the smallest correct change, and verifies it. This
guide walks a typical loop.
Start it
Section titled “Start it”From the browser UI, pick coding on the Agents page and hit chat. From the terminal:
muaz chat --agent codingRun it from inside the repository you want it to work on — the file tools are
confined to the agent’s workspace_root (the directory muaz started in by
default).
What makes it effective
Section titled “What makes it effective”- A live task list. For anything multi-step the agent calls
write_tasksand keeps exactly one item in progress. In the UI this renders as a collapsible Tasks panel; in the REPL it prints as a checklist. You always see the plan. - Diff-preview approvals. File edits (
edit_file/write_file/patch_file) areaskby default — you approve a colored diff of the exact change, not opaque JSON. Read commands (read_file,search, safeshell) run freely. - Cross-session memory. Tell it a durable fact (“this repo uses pnpm and
vitest”) and it records it with the
memorytool. Next session, that note is already in its system prompt. Edit the notebook yourself on the Agents page. - Delegation. For a self-contained sub-task it can call
spawn_agentto hand off to another agent and fold the result back in.
A typical turn
Section titled “A typical turn”- Ask for a change: “add a
--jsonflag to thelistcommand and cover it with a test.” - The agent writes a task list, searches for the command definition, and reads just the relevant slice.
- It proposes an edit — you get a diff to Approve once / Approve for session / Deny with a reason.
- It runs the nearest test (
askonshell, unless you allow-listed the test runner), reports what it ran, and marks the task done.
Tune approvals
Section titled “Tune approvals”Give the agent more autonomy by moving specific tools to auto, or scope a
session-wide allowance from the approval prompt. See
Tools & approval. For a hard egress
lock on an agent, set network: none (strips web tools, refuses HTTP MCP) — see
Security.