Skip to content

Repo Assist creates duplicate monthly activity issues when search_issues results are DIFC-filtered #22533

Closed

Description

@mlinksva

In licensee/licensee, I observed a regression where Repo Assist started creating a new monthly activity issue on each scheduled run instead of updating the existing open one.

I asked Copilot to investigate and after back and forth what follows is its suggested issue.


The clearest boundary in the logs is not the repo-side workflow upgrade by itself, but the runtime change between:

  • a last known good run using GitHub MCP v0.31.0
  • subsequent broken runs using GitHub MCP v0.32.0

Why this is likely a bug

The key inconsistency is:

  1. The backend/gateway finds the already-open monthly issues.
  2. Those same issues are then DIFC-FILTERED from the agent.
  3. The agent behaves as if no monthly issue exists and calls create_issue.

So Repo Assist is not failing to search. It is finding the issue, but the issue is not visible at the point where the agent decides whether to update or create.

This leads to a false negative:

  • search finds the issue
  • filtering hides it
  • agent assumes it does not exist
  • agent creates a duplicate

Evidence

Last known good run

This run updated the existing monthly issue instead of creating a new one:

Relevant logs from that run show:

  • GitHub MCP server version v0.31.0
  • agent text: Now I'll update the monthly summary issue #941

First broken run

This run created a duplicate monthly issue instead:

Relevant behavior from that run:

  1. The gateway returned existing open monthly issues for the search query.
    For example, responses included open [Repo Assist] Monthly Activity 2026-03 issues such as:

  2. The GitHub MCP log then recorded those same issues as DIFC-FILTERED, for example:

    • issue:licensee/licensee#941
    • issue:licensee/licensee#954
    • issue:licensee/licensee#955

    with messages like:

    • Resource 'issue:licensee/licensee#941' has lower integrity than agent requires
    • Agent would need to drop integrity tags [...] to trust this resource
  3. The agent sandbox log then reasoned as if nothing existed, with messages like:

    • No monthly activity issue was found ...
    • Memory says "Monthly 2026-03 issue created" but the search returns nothing
  4. The run then called create_issue and created:

Later broken runs

The same pattern appears in later scheduled runs:

These also used GitHub MCP v0.32.0 and also created additional monthly duplicates rather than updating the existing open issue.

Expected behavior

If search_issues finds an existing issue that Repo Assist previously created and is expected to maintain, that issue should remain visible to the agent for update flows.

If integrity filtering intentionally prevents that, the tool result should fail in a way that is distinguishable from "no results", so the agent does not treat a filtered match as nonexistence.

Actual behavior

In the broken runs:

  • search_issues finds existing monthly issues at the backend/gateway layer
  • those issues are then DIFC-FILTERED
  • the agent sees no usable monthly issue
  • Repo Assist creates a fresh [Repo Assist] Monthly Activity 2026-03 issue instead of updating the existing one

Questions

  1. Was there an intentional trust / DIFC change between the runtime stack using GitHub MCP v0.31.0 and the one using v0.32.0 that would explain this?
  2. Should issues previously created by Repo Assist / github-actions[bot] be readable as trusted inputs for subsequent Repo Assist runs in the same repository?
  3. Should gh-aw surface a stronger error when all matching search_issues results are filtered, so the agent does not interpret that as "not found"?

Environment

Activity

  1. locked and limited conversation to collaborators on Mar 23, 2026
  2. unlocked this conversation on Mar 23, 2026
  3. lpcox commented on Mar 24, 2026

    @lpcox
    Collaborator

    @mlinksva could you modify your lock.yml file so that it uses container image ghcr.io/github/gh-aw-mcpg:v0.2.4 and re-run?

  4. mlinksva commented on Mar 24, 2026

    @mlinksva
    Author

    @lpcox modified lockfile per your instructions, and fixed! I enjoyed the below

    Image
  5. mlinksva commented on Mar 24, 2026

    @mlinksva
    Author

    However, I note the most recent run (that added the note above) also added:

    ⚠️ Open non-bot issues hidden by integrity policy — issue triage not possible this run

    I haven't investigated yet, just noting in case it might be fallout from this change.

  6. locked and limited conversation to collaborators on Mar 24, 2026
  7. unlocked this conversation on Mar 24, 2026
  8. locked and limited conversation to collaborators on Mar 24, 2026
  9. unlocked this conversation on Mar 24, 2026
  10. 16 remaining items

  11. mlinksva commented on Mar 31, 2026

    @mlinksva
    Author

    They're first time contributors to my repo, but not first time users of GitHub. My (probably wrong) understanding is that only the latter (first time users of GitHub) should be filtered out at unapproved.

  12. locked and limited conversation to collaborators on Mar 31, 2026
  13. unlocked this conversation on Mar 31, 2026
  14. mlinksva commented on Apr 6, 2026

    @mlinksva
    Author

    Belatedly noting that adding usernames as trusted-users does work, those specific users' issues are no longer filtered out.

    I'd still like some way to have issues that have some indication that they're not malicious (eg a maintainer has reacted/commented/labeled?) get past the inegrity filter for a user who hasn't contributed to the repo before -- without me manually adding the user to the config or opening up to any/all content.

  15. locked and limited conversation to collaborators on Apr 6, 2026
  16. unlocked this conversation on Apr 6, 2026
  17. lpcox commented on Apr 7, 2026

    @lpcox
    Collaborator

    @mlinksva Thanks for the update. Funny you should mention a maintainer endorsing a comment with a reaction. About a month ago, i spent a lost weekend trying to implement this only to realize that the github mcp server only gave reaction counts instead of info about who reacted to a comment. However, we are looking to move away from the github mcp server to a containerized/proxied gh cli, which could tell us if a maintainer had reacted positively to a comment, e.g., a thumbs up, heart, etc, as a form of endorsement. I think this will work if we can transition away from the mcp server.

  18. mlinksva commented on Apr 9, 2026

    @mlinksva
    Author

    Nice, looking forward to it!

    Just in case useful (I've no idea if they are related), a few potential oddities from the most recent run in licensee/licensee:

    • It commented on an issue (655) that had previously been below the integrity threshold -- I didn't change anything such as adding the user to trusted-users
    • There was a Error: ✗ Message 1 (add_labels) failed: No issue/PR number available error that I don't know what was caused by -- the summary below says it labeled 655 but there are no labels on it so must be about that one
    • The monthly summary seems to have appended a new summary to the existing one rather than replacing/updating it, screenshot showing that below
    Image
  19. locked and limited conversation to collaborators on Apr 9, 2026
  20. unlocked this conversation on Apr 9, 2026
  21. pelikhan commented on Apr 10, 2026

    @pelikhan
    Collaborator

    Repo assist needs its own repo to track improvements

  22. lpcox commented on Apr 23, 2026

    @lpcox
    Collaborator

    Tracking issue created in gh-aw-mcpg: github/gh-aw-mcpg#4419

    This covers the guard-side fix: changing author_association: NONE to map to unapproved integrity (instead of none) in guards/github-guard/rust-guard/src/labels/helpers.rs. This would allow established GitHub users who haven't previously contributed to a specific repo to pass min-integrity: unapproved filtering.

    Generated by Gateway Issue Dispatcher · ● 1.3M · ◷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions