Copilot coding agent cannot resolve PR review threads #196715
Replies: 5 comments 3 replies
-
|
💬 Your Product Feedback Has Been Submitted 🎉 Thank you for taking the time to share your insights with us! Your feedback is invaluable as we build a better GitHub experience for all our users. Here's what you can expect moving forward ⏩
Where to look to see what's shipping 👀
What you can do in the meantime 💻
As a member of the GitHub community, your participation is essential. While we can't promise that every suggestion will be implemented, we want to emphasize that your feedback is instrumental in guiding our decisions and priorities. Thank you once again for your contribution to making GitHub even better! We're grateful for your ongoing support and collaboration in shaping the future of our platform. ⭐ |
Beta Was this translation helpful? Give feedback.
-
|
I agree that this is a real workflow gap, not just a prompt-quality issue. The important distinction is that “fixing the code” and “making the PR merge-ready” are not the same thing in repositories that require conversation resolution. If required conversation resolution is enabled, then unresolved review threads are part of the merge gate, just like failing CI or missing approvals. From an end-user perspective, an agent asked to “finish this PR” should probably treat the PR as incomplete until all of the following are true: Right now, if the agent can push commits but cannot resolve the corresponding review threads, the workflow ends in a half-complete state: the code may be fixed, but the PR is still not merge-ready. The clean product solution would be a first-class, narrowly scoped PR review-thread capability for the agent, rather than requiring every repository admin to create and maintain a separate PAT secret. A safe design could be something like: That would preserve the security boundary while matching the actual PR workflow. I also think the API/tooling surface should expose the necessary thread identifiers end-to-end. If a tool can list review conversations but does not return the A useful minimal capability set for this workflow would be: Until that exists, the agent should probably avoid saying the PR is “done” or “merge-ready” when unresolved threads remain. A safer final status would be something like: That would at least prevent the false-done state. So I would frame this as a product/API consistency issue:
For teams using required conversation resolution, resolving handled threads is not cosmetic. It is part of merge readiness. |
Beta Was this translation helpful? Give feedback.
-
|
Exactly — that comparison makes the gap even clearer. If other cloud agents with GitHub App integration can resolve PR review conversations, then the limitation is probably not inherent to “AI agents” or automation in general. It is more specifically about the permission/tooling surface exposed to Copilot coding agent. That also supports the main product point: Copilot can already participate in the PR workflow by pushing code changes, but it does not seem to have the complete PR-review capability needed to finish the workflow when required conversation resolution is enabled. So the missing piece is not just “better reasoning”; it is a first-class, permissioned path for Copilot to:
If this framing captures the issue well, feel free to mark the answer so others following the same Copilot PR workflow limitation can find the main explanation quickly. |
Beta Was this translation helpful? Give feedback.
-
|
Glad the explanation helped. If this answered the original question, could you please mark my reply as the accepted answer? That would help future readers find the solution more easily. |
Beta Was this translation helpful? Give feedback.
-
|
One more observation! in case if I tag @claude ( as copilot agetn https://docs.github.com/en/copilot/concepts/agents/anthropic-claude ) in my comment and ask claude to fix it. Then claude can do everything! resolve threads comment back. So it's really crazy - copilot cannot but copilot via claude can.. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
🏷️ Discussion Type
Product Feedback
💬 Feature/Topic Area
Copilot Cloud Agent
Body
Summary
When I ask Copilot coding agent (
@copilot /act) to finish a pull request — fix CI, address review comments, and resolve review conversations — the agent cannot complete the resolve step through any supported, documented path. The product behaves as if “resolve threads” is optional UI polish, but for teams using required conversation resolution and agent-driven/actworkflows it is a core merge-readiness action.This is not a model “forgetting” to click Resolve. It is structurally blocked by token permissions and the read-only GitHub MCP surface exposed to the agent.
What I expect
On
@copilot /acton an existing PR, the agent should be able to:open threads = 0before claiming merge-readyThat matches how humans use “Resolve conversation” on GitHub and how branch protection / required resolution works.
What actually happens
1. GitHub MCP is read-only (~33 tools)
Agent log shows
github-mcp-serverstarts with tools likepull_request_read,actions_list,get_file_contents, etc. — but not:pull_request_review_write(which includesresolve_thread/unresolve_thread)add_pull_request_review_commentSo the agent cannot resolve via MCP, despite docs describing
pull_request_review_write→resolve_threadwithPRRT_…thread IDs.get_review_commentsreturns threads withoutid(PRRT_…), so even workarounds that need thread IDs cannot chain through MCP alone.2.
GITHUB_TOKENin the agent cannot runresolveReviewThreadUsing
gh api graphqlwithGITHUB_TOKENfails with insufficient permissions (not firewall — allowlist is configured).The agent can push commits to its branch but cannot mutate review thread state. So “resolve” and “write code” are oddly split across different permission models.
3. Workarounds are unreasonable
ERR_BLOCKED_BY_CLIENTin the agent environment — not a serious API.OPENADT_GH_PR_TOKENwith Pull requests: Read and write): works, but why should every repo admin mint and store a PAT so the official agent can click the equivalent of “Resolve conversation”?@copilot /act.4. Agent gives up or marks
/act“done” incorrectlySessions end with:
resolve_threadcalls/actaborted as “blocked”Evidence (public repro context)
@copilot /act)Ask / product feedback
pull_request_review_writewithresolve_thread), not only read-onlypull_request_read.GITHUB_TOKEN(or a first-class agent token) permission toresolveReviewThreadon PRs the agent is already allowed to push to — same security boundary, strictly scoped to that PR.PRRT_…threadidinget_review_commentsso resolve can work end-to-end withoutghfallbacks.@copiloton PRs — today it reads as if MCP + agent can do PR hygiene, but resolve is a dead end unless users add PAT secrets.Why this matters
/actskills that explicitly require “Resolve conversation” (not just reply in a top-level PR comment)Pushing code without resolving threads leaves PRs in a false “done” state and forces humans to clean up what the agent was asked to do.
Happy to share redacted agent session logs (tool list, GraphQL errors, thread counts) if useful. Thanks for considering this as a product gap, not user error.
Beta Was this translation helpful? Give feedback.
All reactions