From user report to merged fix: agents closing the loop end-to-end
A customer reports a bug in Slack. Some weeks later a fix merges, and — in most companies — nobody tells them. Between those two events sits a relay: someone notices the report, someone files it, someone picks it up, someone fixes it, someone remembers who asked. Every handoff is a place the baton gets dropped.
The interesting development is that each leg of that relay is now automatable, and the pieces have started connecting. Not as one magic product, but as a pipeline with humans stationed at the two points that need judgment. Here's the pipeline stage by stage, with an honest note on where it still breaks.
Stage one: the report becomes an issue
The pipeline's input problem is that user reports are conversational — a Slack message like "export is timing out again for our EU workspace" — and coding work needs structured issues. Manually, this stage depends on someone noticing the message, recognizing it isn't a duplicate, and filing a ticket with enough context to act on.
This is the stage we work on, so disclosure: we build Modem, which watches the channels where reports land — Slack, Discord, support tools, GitHub — dedupes and quantifies them, and files tracked issues in Linear, Jira, or GitHub with the reporter and their verbatim context attached. Reports link into one context graph across channels, which is what keeps the quantifying honest: four workspaces hitting the same timeout become one issue with four reporters, not four issues. The attached context matters more in an agent pipeline than a human one, for reasons stage two makes clear. What Modem doesn't do is write code; it hands off at the issue.
Stage two: the issue becomes an assignment
Issue trackers have become dispatch layers for coding agents. Linear's agent integrations let you delegate an issue to an installed agent — Cursor, Codex, GitHub Copilot, Devin, and others — by assigning it or mentioning it, the same way you'd hand work to a teammate. Assign a Linear issue to Copilot's coding agent and it analyzes the issue and opens a draft pull request; connect Cursor and an assignment spins up a cloud agent against the task. Linear's triage rules can even delegate incoming issues to an agent automatically, with no human in the assignment step at all.
The practical consequence: the quality of the issue is now the quality of the brief. An agent can't walk over to support and ask what the customer meant. If the issue says "export timing out" with no workspace, no timestamps, no user quote, the agent guesses — plausibly and wrongly. This is why capture-stage context is load-bearing: the reproduction details, the exact phrasing, which customers hit it. Agents can also pull that context on demand over MCP; we compared the options in best MCP servers for customer feedback.
Stage three: the patch, and the human gate
The agent produces a draft PR. Today's honest characterization: for well-scoped bugs with clear reproduction steps, agent PRs are routinely mergeable; for gnarly, cross-cutting, or ambiguous problems, they are a first attempt a human finishes. The comparison literature says the same thing from the vendor side — Devin's own guidance positions agents for well-defined routine tasks, with judgment-heavy work staying interactive.
This is the first of the two human stations, and it should stay one. Review is where you catch the agent solving the stated problem instead of the actual one. Teams that treat agent PRs as auto-mergeable are running a pipeline with no quality gate on the sharpest tool in it. The scoping decision upstream — which issues are agent-suitable at all — is the other judgment call, and it's a human's; we covered the tooling for that handoff in routing feedback to coding agents.
Stage four: the merge closes the loop
The stage everyone forgets is the one customers actually experience. The PR merges, the issue auto-closes — and the person who reported the bug in Slack three weeks ago hears nothing, because by merge time nobody remembers the fix started as their message.
If the pipeline kept its provenance, this stage is mechanical: the merged PR links to the issue, the issue links to the requesters, so the merge event can trigger the follow-up — a reply in the original thread, a line in the release notes, a direct note to the four customers who hit it. The argument for automating it is the same as for the rest of the pipeline: it fails whenever it depends on memory. We compared the tools that handle this stage in close the loop.
What this replaces, and what it doesn't
End-to-end, the relay now looks like: report captured and triaged automatically, issue assigned to an agent (by a person or a triage rule), patch drafted by the agent, reviewed and merged by an engineer, follow-up triggered by the merge. Humans appear exactly twice — deciding the work is worth doing and is agent-suitable, and reviewing the result — which are the two places judgment lives.
What it doesn't replace is anyone deciding what deserves fixing. A pipeline this smooth makes it cheap to fix what's reported, and what's reported is not the same as what matters; the loudest bug is not the most important one. Keep a human owning prioritization, start the automation at whichever stage your relay drops the baton today, and let the merge — not someone's memory — be the thing that tells your customer you heard them.
