LearnNewsExamplesServices
Frontmatter
id12038
titleDocument @me assignee alias on create_issue
stateClosed
labels
documentationenhancementdeveloper-experienceai
assigneesneo-gpt
createdAtMay 26, 2026, 9:19 PM
updatedAtMay 26, 2026, 9:32 PM
githubUrlhttps://github.com/neomjs/neo/issues/12038
authorneo-gpt
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 26, 2026, 9:32 PM

Document @me assignee alias on create_issue

Closed v13.0.0/archive-v13-0-0-chunk-14 documentationenhancementdeveloper-experienceai
neo-gpt
neo-gpt commented on May 26, 2026, 9:19 PM

Context

Claude flagged that the GitHub workflow MCP create_issue tool accepts assignees, but its OpenAPI contract does not document whether the @me alias is valid. Exploration verified the behavior is real because IssueService.createIssue() passes assignee values unchanged to gh issue create --assignee, and gh issue create --help documents @me as self-assignment.

The Problem

The MCP schema currently documents manage_issue_assignees as accepting @me, but create_issue only describes assignees as GitHub user logins. Agents can and do use @me for self-assignment, but the contract surface does not advertise that create-time alias. This creates unnecessary uncertainty and encourages re-derivation.

The Architectural Reality

  • ai/mcp/server/github-workflow/openapi.yaml documents manage_issue_assignees special values, including @me.
  • The create_issue schema in the same file only says assignees are GitHub user logins.
  • ai/services/github-workflow/IssueService.mjs forwards every assignees[] value unchanged into gh issue create --assignee.
  • gh issue create --help confirms the delegated CLI supports @me for self-assignment.

The Fix

Update the GitHub workflow MCP contract and adjacent JSDoc so create_issue.assignees explicitly documents @me as resolving to the authenticated GitHub user. Add a focused regression test that protects the OpenAPI contract from drifting back.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
create_issue.assignees[] gh issue create --assignee plus IssueService.createIssue() pass-through Document @me as authenticated-user self-assignment Literal GitHub login strings remain valid openapi.yaml, IssueService.createIssue() JSDoc gh issue create --help; source inspection

Decision Record impact

None. This is contract documentation for an existing delegated behavior.

Acceptance Criteria

  • create_issue OpenAPI description or assignee property explicitly documents @me.
  • IssueService.createIssue() JSDoc mirrors the @me contract.
  • A focused unit test verifies the create_issue.assignees OpenAPI contract mentions @me.
  • No runtime assignee resolution logic is introduced for this ticket.

Out of Scope

  • Adding @copilot to the MCP contract. The existing MCP manage-assignees surface only advertises @me, so this ticket should not broaden the public contract by accident.
  • Migrating create_issue away from the existing CLI-backed implementation.
  • Changing permission checks, ProjectV2 attachment, labels, or assignee mutation behavior.

Avoided Traps

  • Do not implement custom @me resolution in the MCP service; the current delegated CLI behavior already resolves it.
  • Do not treat this as a generic assignee-management refactor. The observed friction is missing contract documentation.

Related

  • Discussion #11119 (create_issue ProjectV2 contract history)
  • Issue #10426 (separate Memory Core mailbox @me behavior; related alias concept, different subsystem)

Origin Session ID: 1578fb3e-7f5a-4b43-a6d0-ba00e66a9885 Retrieval Hint: "create_issue assignees @me GitHub workflow MCP contract"

tobiu referenced in commit 3bd8140 - "docs(mcp): document create_issue @me assignee alias (#12038) (#12041) on May 26, 2026, 9:32 PM
tobiu closed this issue on May 26, 2026, 9:32 PM