Guide

How to Assign Tasks to AI Coding Agents (Without Regretting It)

Whatever tool you use, assignment follows one pattern: issue → context → agent → branch → PR → review. The difference between magic and mess is what the assignment contains, not which agent gets it.

By Kylian Migot · Updated July 2026 · 8 min read

Quick answer

Assigning work to a coding agent is the same everywhere: issue → context → agent → branch → PR → review. The outcome is decided at the first step, an agent executes exactly what the task says, guessing wherever it is silent. An assignment is agent-ready when it has bounded scope, written acceptance criteria, named files, explicit exclusions, and a verification command.
The universal pattern
Issue → context → agent → branch → PR → review, in every tool
Assignment today
Linear delegates to directory agents; GitHub assigns issues to Copilot's coding agent
Agent-ready checklist
Bounded scope, acceptance criteria, named files, exclusions, a verification command
How AIDEN does it
Drag a story onto the board; the spec gate makes it agent-ready by construction
01

The Universal Pattern

Every tool that lets you hand work to a coding agent, Linear, GitHub, a raw terminal session, an orchestration board, implements the same six-stage pipeline, whether or not it names the stages. Knowing the pattern makes the tools legible:

1 · Issue

A durable, written unit of work. Not a chat message: something with an identity that outlives the session, so the work can be tracked, reviewed, and traced back later.

2 · Context

What the agent knows beyond the issue text: the repo, a CLAUDE.md or AGENTS.md context file, conventions, and constraints. Assignment quality is issue quality times context quality.

3 · Agent

The executor and its model, Claude Code, Codex, or a hosted agent. The most fussed-over choice, and usually the least decisive one for any single well-specified task.

4 · Branch

Isolation. The agent works on its own branch or git worktree so parallel assignments cannot collide and a failed run can be discarded without cleanup.

5 · PR

The output has one honest form: a reviewable diff. Agents that report success in prose rather than a PR are asking to be trusted instead of checked.

6 · Review

A human judges the diff against the original criteria. This is where assignment quality becomes visible, and where vague assignments go to die.

The stages that determine the outcome are the first two. Everything after the agent starts is mechanical; everything before it is judgment. That is the recurring theme of project management for AI agents: the human work concentrates at the edges of the pipeline.

02

How Assignment Works Today

The pattern is universal; the ergonomics differ. Three representative ways teams assign work to agents right now:

Linear: delegate an issue

Linear lets you delegate an issue to an agent from its agent directory, Cursor, Codex, Devin, and others, while the human stays primary assignee. The agent picks up the issue text as its brief and reports back on the issue. Pairing Linear with a local agent is covered in our Linear + Claude Code guide.

GitHub: assign to Copilot

GitHub lets you assign an issue to Copilot's coding agent the way you would assign a teammate. The agent works in a cloud environment and opens a draft PR against the repo. The issue body is the whole assignment, whatever it does not say, the agent decides.

CLI: prompt plus context file

In Claude Code or Codex CLI, assignment is a prompt: you paste or describe the task in the terminal, and the agent reads it alongside your CLAUDE.md or AGENTS.md context file. Maximum control, zero structure, the discipline of a good assignment is entirely on you.
03

The Agent-Ready Checklist

An assignment is agent-ready when the agent can complete it without guessing about intent. In practice that means five properties, and a task missing any of them will cost you at review time:

Bounded scope

One coherent change, completable in one session, reviewable in one sitting. If the task hides three tasks, the diff will hide three diffs, and you will have to reject or accept them together.

Written acceptance criteria

Concrete, verifiable conditions that define done. “Works correctly” is not a criterion; “returns 401 for an expired token and the auth tests pass” is. The agent uses these as its target, and you use them as your review contract.

Named files or areas

Where the change lives: the files, modules, or directories in play. This anchors the agent's search and shrinks the blast radius; an agent told where to work is far less likely to “improve” things elsewhere.

Explicit exclusions

What not to touch: no dependency upgrades, no refactors outside the named files, no API changes. Exclusions are the fence against scope creep, which agents commit eagerly and in large volumes unless told otherwise.

A verification command

One command the agent can run to check its own work, a test suite, a typecheck, a lint pass. It converts the acceptance criteria from prose into something executable, and lets the agent iterate before you ever see the diff.

The checklist is deliberately tool-agnostic: it applies to a Linear issue, a GitHub issue, a terminal prompt, or a story card. If writing all five by hand feels heavy, that is what templates and generators are for, see our free agent spec builder and story & spec templates.

Ship your first agent today

Download AIDEN free and point it at your existing Claude Code or Codex setup. No credit card, running in minutes.

Download AIDEN free

Free to start · macOS 12+ · No credit card required

04

Worked Example: Vague Ticket to Agent-Ready Story

Here is the kind of ticket every backlog contains, perfectly serviceable for a human who can ask questions, and a trap for an agent:

Title: Logout is broken sometimes
Body:  Users report they still look logged in after logging out.
       Probably a session thing. Please fix.

Converting it is a mechanical pass over the checklist:

  1. 1

    Bound the scope

    Investigate first if you must, but assign a fix, not a mystery. Suppose a quick look shows the logout endpoint clears the server session but not the client cookie. The story becomes one change: make logout clear the session cookie. The “sometimes” report about stale caches? A separate story.
  2. 2

    Write the acceptance criteria

    Translate “fixed” into checkable statements: after POST /api/auth/logout, the session cookie is expired in the response; a subsequent request to a protected route returns 401; existing auth tests still pass; a new test covers the cookie expiry.
  3. 3

    Name the files

    Point at the territory: the logout handler in src/server/auth/logout.ts, the cookie helpers in src/server/auth/cookies.ts, and tests in src/server/auth/__tests__/. The agent should not need to survey the repo to find the work.
  4. 4

    State the exclusions

    Fence the change: do not modify the login flow, do not change session storage or the cookie library, no refactors outside the named files. Without this line, “fix logout” has a real chance of coming back as “rewrote the auth module.”
  5. 5

    Give a verification command

    One command that must pass before the agent reports done, here, the auth test suite plus the typecheck.
    npm test -- auth && npx tsc --noEmit

The same ticket, agent-ready:

Title: Logout leaves session cookie set — expire it on logout

Scope: POST /api/auth/logout clears the server session but never
expires the "sid" cookie, so the client still appears logged in.

Acceptance criteria:
- Logout response expires the "sid" cookie (Max-Age=0, matching attrs)
- After logout, GET /api/me returns 401
- New test covers cookie expiry; existing auth tests pass

Files: src/server/auth/logout.ts, src/server/auth/cookies.ts,
       src/server/auth/__tests__/

Exclusions: no changes to login, session storage, or cookie library;
no refactors outside the files above.

Verify: npm test -- auth && npx tsc --noEmit

This is a spec in all but name, and writing them before code exists is the core practice of spec-driven AI development. The ticket that goes in determines the diff that comes out.

05

Common Failure Modes

When an assignment goes wrong, it usually goes wrong in one of four recognizable ways, and each traces back to a missing checklist item:

The confident misread

The agent resolves an ambiguity differently than you would have and builds the wrong thing well. Cause: missing acceptance criteria. You cannot reject a diff for violating criteria that were never written.

The sprawling diff

You asked for a fix and received a fix plus a refactor, a dependency bump, and improvements to files you did not mention. Cause: missing exclusions and named files. Agents default to helpfulness; fences are opt-in.

The false “done”

The agent reports success, but the change does not actually work. Cause: no verification command. Self-reported completion is the weakest signal an agent produces; an executable check is the strongest.

The unreviewable epic

The task was three tasks, and the resulting thousand-line diff cannot be meaningfully reviewed, so it gets skimmed or bounced whole. Cause: unbounded scope. Splitting after the fact costs more than splitting before.

None of these are model failures, re-running a vague assignment on a bigger model reproduces the failure with better prose. They are assignment failures, and the tracker that holds your assignments is where they get fixed structurally: see issue tracking for AI agents.

06

How AIDEN Does It: Assignment Is a Drag

AIDEN's design premise is that the checklist should be enforced by the tool, not by discipline. On the board, assignment is literally a drag: drop a story card into place, pick the CLI, Claude Code or Codex, and the model for that story class, and start it. Two mechanisms do the checklist's work:

The spec gate

Before any code is written, AIDEN expands the card into a structured spec: scope, files in play, acceptance criteria, exclusions. You approve or edit it, and only an approved spec reaches an agent. Every assignment is agent-ready by construction, the vague ticket in the example above cannot get past the gate as written.

A worktree per story

Starting a story creates an isolated git worktree and branch automatically, so branch hygiene is not a step anyone can skip. The story returns as a live diff on the card with a one-click PR, closing the pattern: issue → context → agent → branch → PR → review, with the middle fully automated.

FAQ

Can I assign a GitHub issue to an AI agent?
Yes. GitHub lets you assign an issue to Copilot's coding agent, which works in the background and opens a draft pull request for review. Linear takes a similar approach: you delegate an issue to an agent from its directory, Cursor, Codex, Devin, and others, while a human stays the primary assignee. In both cases the agent's output arrives as a PR, and the quality of the result tracks the quality of the issue text far more than the choice of agent.
What makes a task agent-ready?
Five things: bounded scope small enough for one session, written acceptance criteria concrete enough to verify, the files or areas of the codebase named, explicit exclusions stating what not to touch, and a verification command the agent can run to check its own work. A task missing any of these forces the agent to guess, and it will guess confidently. The checklist matters more than the model: a well-specified task on a mid-tier model usually beats a vague task on a frontier one.
How big should a task assigned to an AI agent be?
One agent, one session, one reviewable diff. If you cannot imagine reading the resulting diff in one sitting, the task is too big, split it before assigning, not after the agent returns a thousand-line PR. Very small tasks have the opposite problem: batching ten one-line fixes into one story wastes the overhead of a session per fix. The sweet spot is a coherent change with a single testable outcome.
What happens if I assign a vague task to an agent?
The agent completes it anyway, that is the trap. Unlike a human, it will not push back or ask what you meant; it resolves every ambiguity itself and delivers a confident diff implementing its interpretation. You discover the gaps at review time, when they are most expensive, and often reject work that executed a bad assignment flawlessly. Vague in, plausible-but-wrong out.
How does assigning a task work in AIDEN?
Assignment is a drag: you drop a story card onto the board and pick the CLI (Claude Code or Codex) and model for it. Before any code is written, AIDEN's spec gate expands the card into a written spec, scope, files, acceptance criteria, exclusions, that you approve or edit. The story then runs in its own git worktree and comes back as a diff on the card with a one-click PR. The checklist in this guide is enforced by construction rather than by discipline.

Keep reading

Make every assignment agent-ready.

In AIDEN, assignment is a drag onto the board, and the spec gate writes the checklist for you. Free for one project.

macOS 12+ · Bring your own Claude Code or Codex · Your code stays local