Skip to content
Nicolas Chiong· 5 min read

A runbook for recurring product agents

A practical runbook for deciding which recurring product-agent workflows deserve triggers, permissions, review, and a clear stop condition.

Recurring agents are moving from personal developer tooling into shared product systems. Linear's July 2026 Loops launch is a useful marker because it treats recurring agent work as a workspace object, not a clever prompt someone keeps in a private chat. That changes the product-management question. The hard part is no longer whether an agent can inspect a bug or write a draft PR. The hard part is deciding which recurring jobs deserve permission to act every week or on every incoming issue.

The useful boundary

I would not start with a broad automation like "keep the roadmap current." That sounds helpful, but it hides too many decisions inside one instruction. A better first loop is narrow, inspectable, and annoying enough that people already skip it.

Good candidates look like this:

Recurring jobAgent outputHuman decision
New bug enters triageLikely area, duplicate check, owner suggestionAccept, snooze, or decline
Incident closesFollow-up issues with owners and evidenceCommit to the work
Launch date movesAffected docs and teams to notifyApprove the message
Feature request arrivesPlatform-specific follow-up issuesKeep or merge them

Linear describes Loops as scheduled or event-driven operations that can use workspace context, connected tools, code intelligence, and previous runs. The important detail is not the schedule. It is the run history, permissions, and team-level visibility. If the team cannot inspect what happened, it is not a product workflow. It is a private assistant with production-ish access.

The five fields I want before enabling a loop

For any recurring product agent, I want the same small runbook before it goes live.

1. Trigger

Name the exact event or cadence. "Every Monday at 2 PM, review active projects whose target date changed in the last seven days" is usable. "Watch launches" is not.

Event-driven triggers need extra care because incoming text can be untrusted. GitHub's Copilot automation docs call this out directly: automations can run without a person initiating each task, so tool choice, actor permissions, and workflow approvals become part of the control surface. The product version of that rule is simple. If customers, vendors, or public issues can influence the trigger, the agent should start in read-only mode.

2. Context

Write down the sources the agent may use. Issues, project documents, customer requests, Sentry events, pull requests, and release notes are different kinds of evidence. Mixing them is fine, but the instruction should rank them.

My default ranking is: production incident data first, linked customer signal second, current project documents third, comments fourth. Comments are useful color, but they are also where stale assumptions live.

This is where recurring agents connect to the older discipline of agent-ready issues. A one-off coding agent needs crisp acceptance criteria. A recurring product agent needs crisp evidence rules because it will keep waking up after everyone forgets the original setup conversation.

3. Allowed actions

The smallest useful permission set wins. Linear's docs split Loops permissions across team access, web access, code intelligence, coding sessions, external sources, and write scope. That is the right shape. Do not grant coding-session access to a loop whose job is to summarize incoming launch risk. Do not grant broad write access when commenting on the triggering issue is enough.

I like three action tiers:

  1. Comment only: safest default for the first week.
  2. Create draft work: acceptable once comments are consistently useful.
  3. Start implementation: only for narrow bug classes with clear tests and ownership.

GitHub's Copilot review docs keep the same guardrail in a different place: agent pull requests still need human review, and Actions workflows do not run automatically by default when Copilot pushes changes. That friction is a feature. It prevents an automation chain from becoming a release path.

4. Stop conditions

A recurring agent needs explicit reasons to do nothing. Without them, it will manufacture work to justify the run.

I would put these in the instruction itself:

  • If the evidence conflicts, comment with the conflict and stop.
  • If the owner is unclear, ask for ownership and stop.
  • If the work spans more than one team, create a coordination note and stop.
  • If the fix touches authentication, billing, permissions, data deletion, or deployment workflows, do not start implementation.

This is the product-delivery sibling of an eval gate for AI feature launches. The useful gate is not a committee. It is the boring rule that prevents the agent from crossing a boundary the team has not reviewed.

5. Review rhythm

Run history is only useful if someone reads it. For the first two weeks, I would review every run and keep a tiny scorecard: useful action, noisy action, unsafe action, missed action. After that, sample runs weekly and inspect every run that spent unusual credits, touched a sensitive project, or failed.

Linear's docs note that Loops consume AI credits and can pause when credits run out. Treat that as an operational signal, not just a billing concern. A loop that burns credits without reducing queue time or coordination work should be disabled, narrowed, or turned back into a manual checklist.

A starter instruction

I would start with an instruction this plain:

When a new bug enters Team Triage, inspect the issue description, comments, linked customer requests, and relevant code context. Add one comment with: likely product area, whether it appears duplicate, evidence used, recommended owner, and next action. Do not change status, priority, assignee, labels, project, or milestone. Do not start a coding session. If evidence is insufficient or conflicting, say what is missing and stop.

That is intentionally unexciting. It creates an observable baseline. Once the comments are reliably useful, let the loop add labels. Then let it suggest owners. Only then consider draft follow-up issues or coding sessions.

What I would measure

For product delivery, the measure is not how many agent runs completed. I care about queue age, handoff quality, duplicate rate, and review load.

A loop is working when fewer issues sit untouched, fewer teams receive vague handoffs, and reviewers spend less time reconstructing context. It is failing when it creates more tickets than decisions, hides uncertainty behind confident comments, or turns every product ambiguity into engineering work.

Product agents will make recurring work cheap enough to run by default. The teams that benefit will be the ones that keep the loop small, visible, permissioned, and easy to turn off.

product-deliveryai-agentslinearworkflow-automation

References

  1. linear.appLinear
  2. linear.appLinear Docs
  3. linear.appLinear
  4. docs.github.comGitHub Docs
  5. docs.github.comGitHub Docs

Related writing

← PreviousA widget contract for ChatGPT Apps SDK launches

Let's make something useful.

Start a conversation