Repository navigation
Move github-mcp-server to v1.12.2, which turns lockdown on - #77
Merged
Merged
Conversation
## What `mcp-github` goes from v1.9.0 to v1.12.2. No configuration changes; the one comment that changes is the lockdown one, because what it described was not happening. ## Lockdown was never on On v1.9.0, http mode computed lockdown as `d.lockdownMode && ghcontext.IsLockdownMode(ctx)` — the server's `GITHUB_LOCKDOWN_MODE` AND a per-request `X-MCP-Lockdown` header. Nothing in dockade sends that header, so the `"1"` in `mcp-servers.yml` did nothing. v1.10.0 (github/github-mcp-server#3112) made it `||`, so the server setting is sufficient on its own. That makes this bump a behaviour change and not only a version: public-repo content from authors without push access is now filtered from results. It is the second of this server's flags found inert — read-only was the first, through v0.31.0 — and the comment now says so, next to the reminder that neither flag is the boundary. ## What else moved, and why none of it is a regression here Read from the release notes, the upstream source and the tool snapshots at both tags; the evidence is in `NOTES.md`. - New write tools. A tool with no rule is `ask`, so every one arrives held. In the catalogue's default toolsets that is `update_issue_comment`; with `GITHUB_MCP_TOOLSETS=all` also `create_repository_ruleset` and `custom_properties_write`, from a new Governance toolset. - `delete_repository` is in the snapshots but the running server does not list it. It could not succeed through dockade anyway: it confirms through a multi-round-trip elicitation read from `req.Params.InputResponses`, and the gateway sends `name` and `arguments` only. - No dispatcher in the default toolsets grew. Under `all`, `projects_write` gains three project-view methods including `delete_project_view` — a rule written for it on v1.9.0 now decides those too — and `repository_ruleset_read` is a new five-method dispatcher, all reads. - Per-call OAuth scope challenges (v1.11.0) act only on `gho_` tokens; the classic-PAT filter still skips itself when the scope lookup fails, so dummy-token enumeration is unchanged. - The server's new 5 MiB request cap is above the gateway's. - `arguments: null` is now rejected; the gateway already sends `{}`. - Symlink writes via `create_or_update_file` now need `allow_symlink_write: true`. Worth building on later: `merge_pull_request` gains `expectedHeadSha`, which makes GitHub refuse a merge whose head moved after it was reviewed. ## Tests - `make lint`, `make consistency`, `make test` pass. - On the host, with the new image running: `make mcp-tools SERVER=github` lists 25 tools, all read-only, with the dispatchers' methods unchanged, on the catalogue defaults; and 90 tools, 34 not read-only, with `GITHUB_MCP_TOOLSETS=all` and `GITHUB_MCP_READ_ONLY=0` — matching the snapshot diff except that `delete_repository` is withheld. `make check-boundary` passes (26 checks). - A real `get_file_contents` through the gateway returned the repository root — gateway, server, egress proxy and injected token end to end. Not exercised: lockdown filtering itself. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
mcp-githubgoes from v1.9.0 to v1.12.2. No configuration changes; the one commentthat changes is the lockdown one, because what it described was not happening.
Lockdown was never on
On v1.9.0, http mode computed lockdown as
d.lockdownMode && ghcontext.IsLockdownMode(ctx)— the server'sGITHUB_LOCKDOWN_MODEAND aper-request
X-MCP-Lockdownheader. Nothing in dockade sends that header, so the"1"inmcp-servers.ymldid nothing. v1.10.0 (github/github-mcp-server#3112) madeit
||, so the server setting is sufficient on its own.That makes this bump a behaviour change and not only a version: public-repo content
from authors without push access is now filtered from results. It is the second of
this server's flags found inert — read-only was the first, through v0.31.0 — and the
comment now says so, next to the reminder that neither flag is the boundary.
What else moved, and why none of it is a regression here
Read from the release notes, the upstream source and the tool snapshots at both tags;
the evidence is in
NOTES.md.ask, so every one arrives held. In thecatalogue's default toolsets that is
update_issue_comment; withGITHUB_MCP_TOOLSETS=allalsocreate_repository_rulesetandcustom_properties_write, from a new Governance toolset.delete_repositoryis in the snapshots but the running server does not list it.It could not succeed through dockade anyway: it confirms through a multi-round-trip
elicitation read from
req.Params.InputResponses, and the gateway sendsnameandargumentsonly.all,projects_writegainsthree project-view methods including
delete_project_view— a rule written for iton v1.9.0 now decides those too — and
repository_ruleset_readis a newfive-method dispatcher, all reads.
gho_tokens; the classic-PATfilter still skips itself when the scope lookup fails, so dummy-token enumeration
is unchanged.
arguments: nullis now rejected; the gateway already sends{}.create_or_update_filenow needallow_symlink_write: true.Worth building on later:
merge_pull_requestgainsexpectedHeadSha, which makesGitHub refuse a merge whose head moved after it was reviewed.
Tests
make lint,make consistency,make testpass.make mcp-tools SERVER=githublists 25tools, all read-only, with the dispatchers' methods unchanged, on the catalogue
defaults; and 90 tools, 34 not read-only, with
GITHUB_MCP_TOOLSETS=allandGITHUB_MCP_READ_ONLY=0— matching the snapshot diff except thatdelete_repositoryis withheld.make check-boundarypasses (26 checks).get_file_contentsthrough the gateway returned the repository root —gateway, server, egress proxy and injected token end to end.
create_pull_requestis exercised end to end as well.Not exercised: lockdown filtering itself.
How to test
Note:
.envis gitignored, so a worktree without a copy starts the server on thecatalogue defaults (read-only, four toolsets) rather than your local settings.
Generated with Claude Code