You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
None. internal/oauth is a new package with no overlap with the fork's project-management additions.
Context
The stdio server previously required a pre-provisioned PAT. This library is the foundation for zero-config OAuth login — users on github.com can authenticate on first tool call without generating a token, removing a significant friction point for new adopters.
All changes below are unreleased upstream commits on github/github-mcp-server main (post v1.4.0, 2026-06-18 → 2026-06-26). All are present in this fork's codebase; PATCHER.md has not yet been updated.
description: Full zero-config OAuth login for stdio server. Core library (internal/oauth) with PKCE + device-code flows, wired into RunStdioServer as a lazy first-call interceptor, with build-time credential injection via ldflags. Users on github.com authenticate via browser; PAT is now optional.
fork conflict: mild design note — the fork's issue_graph traverses sub-issues and cross-refs. Blocked-by/blocking is a complementary axis not yet covered by issue_graph. Standalone tools are additive.
description: Removes remote_mcp_issue_fields feature flag; deletes ~572 lines of legacy issue_write methods that pre-dated issue field support. Granular issue_write with issue_fields is now the only write path.
description: show_ui=false caused up-front execution but the host still rendered the MCP App form (spec has no per-call opt-out). Fix: Views driven by actual tool result; show_ui removed entirely from create_pull_request and issue_write; show/defer logic centralized in ui_capability.go via shouldDeferToForm().
Fix delete:true on issue fields — REST DELETE fallback (#18)
upstream: main (post v1.4.0)
type: bug
description: When deleting the last issue field value, go-github's omitempty tag strips the empty slice from the PATCH body, causing the server to skip the field update. Fix: detect empty-after-filter case and fire individual REST DELETE per field. Already-absent fields are silently skipped; partial failures accumulated with per-field detail.
description: ui_get pagination was unbounded; large repos caused tail latency spikes (observed ~20 min). Fix: uiGetMaxPages = 10 (1000 items) cap on all loops; has_more flag indicates truncation.
Fix issue_write form gating for labels/assignees/milestone/type (#20)
upstream: main (post v1.4.0)
type: bug
description: labels, assignees, milestone, type were missing from issueWriteFormParams allowlist, causing calls with these params to bypass the confirmation form. Fixed by adding all four; description text corrected.
Validate required params in add_comment_to_pending_review (#21)
upstream: main (post v1.4.0)
type: bug
description: mapstructure.WeakDecode silently zero-valued missing required params. Replace with RequiredParam[string] / RequiredInt calls so missing args return isError with descriptive message before any API call.
No-op. The fork's codebase already contains the full internal/oauth/ package (callback.go, env.go, flow.go, manager.go, oauth.go, prompter.go, templates/) implementing PKCE and device-code flows. All tests in internal/oauth/*_test.go are present. The last_patched field in PATCHER.md has not yet been updated to reflect this — that will happen at cycle close.
Activity
gastrodon commentedon Jun 27, 2026
Unified Changelog — upstream main since v1.4.0
All changes below are unreleased upstream commits on
github/github-mcp-servermain (post v1.4.0, 2026-06-18 → 2026-06-26). All are present in this fork's codebase;PATCHER.mdhas not yet been updated.Stories
OAuth 2.1 stdio login (#13 → sub-issues #10 #11 #12)
internal/oauth) with PKCE + device-code flows, wired intoRunStdioServeras a lazy first-call interceptor, with build-time credential injection via ldflags. Users on github.com authenticate via browser; PAT is now optional.Standalone Features
Issue dependency read/write tools (#14)
issue_dependency_read(get_blocked_by/get_blocking) andissue_dependency_write(add/remove×blocked_by/blocking) via GraphQL blockedBy/blocking connections and addBlockedBy/removeBlockedBy mutations. Feature-flagged behindissue_dependencies. Accepts issue numbers, resolves to node IDs in a single aliased query.issue_graphtraverses sub-issues and cross-refs. Blocked-by/blocking is a complementary axis not yet covered byissue_graph. Standalone tools are additive.get_parentmethod forissue_read(#15)issue_readvia GraphQLIssue.parent. Returns{"parent": null}for top-level issues. Always-on, mirroringget_sub_issues.issues.go, complementary toissue_graphPromote issue fields to default, remove legacy
issue_write(#16)remote_mcp_issue_fieldsfeature flag; deletes ~572 lines of legacyissue_writemethods that pre-dated issue field support. Granularissue_writewithissue_fieldsis now the only write path.Bug Fixes
Remove
show_ui, centralize show/defer decision (#17)show_ui=falsecaused up-front execution but the host still rendered the MCP App form (spec has no per-call opt-out). Fix: Views driven by actual tool result;show_uiremoved entirely fromcreate_pull_requestandissue_write; show/defer logic centralized inui_capability.goviashouldDeferToForm().show_ui(PR Add explicit show_ui parameter to UI-enabled write tools github/github-mcp-server#2601). This removes it. Fork's custom tools don't use MCP Apps UI so no functional conflict.Fix
delete:trueon issue fields — REST DELETE fallback (#18)go-github'somitemptytag strips the empty slice from the PATCH body, causing the server to skip the field update. Fix: detect empty-after-filter case and fire individual REST DELETE per field. Already-absent fields are silently skipped; partial failures accumulated with per-field detail.Bound
ui_getpagination (#19)ui_getpagination was unbounded; large repos caused tail latency spikes (observed ~20 min). Fix:uiGetMaxPages = 10(1000 items) cap on all loops;has_moreflag indicates truncation.Fix
issue_writeform gating for labels/assignees/milestone/type (#20)labels,assignees,milestone,typewere missing fromissueWriteFormParamsallowlist, causing calls with these params to bypass the confirmation form. Fixed by adding all four; description text corrected.Validate required params in
add_comment_to_pending_review(#21)mapstructure.WeakDecodesilently zero-valued missing required params. Replace withRequiredParam[string]/RequiredIntcalls so missing args returnisErrorwith descriptive message before any API call.gastrodon commentedon Jun 27, 2026
No-op. The fork's codebase already contains the full
internal/oauth/package (callback.go, env.go, flow.go, manager.go, oauth.go, prompter.go, templates/) implementing PKCE and device-code flows. All tests ininternal/oauth/*_test.goare present. Thelast_patchedfield in PATCHER.md has not yet been updated to reflect this — that will happen at cycle close.