io.github.Sanoy24/repoward is an MCP server that GitHub MCP server that blocks private-to-public leaks by agents, with approvals and audit. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 61/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"repoward": {
"env": {
"GITHUB_TOKEN": "<your-token>"
},
"args": [
"repoward",
"serve"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
GitHub MCP server that blocks private-to-public leaks by agents, with approvals and audit.
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
uvx 'repoward' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked repoward against OSV.dev.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in other
deja-vu: local memory over the session histories of forty-three coding agents.
MCP WordPress Remote proxy server
专门为 agent 打造的 agent 搜索工具,具备多语言搜索能力,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
Searchable football data provider documentation for AI coding agents. Like Context7 for football data.
MCP Security Weekly
Get CVE alerts and security updates for io.github.Sanoy24/repoward and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A GitHub MCP server that stops AI agents acting on what an attacker's issue told them to do.
Status: alpha. It has not had an independent security review. Read the threat model, especially the part about where it runs.
An agent with GitHub access can read a malicious public issue, read a private repository, and post the contents in a public pull request. Each call looks allowed on its own, so per-tool permissions do not stop the sequence. This is the attack Invariant Labs published against agents using GitHub's MCP server, and repoward's test suite replays it against real repositories.
Before every write, repoward checks what this agent has already read, using facts from GitHub:
| If the agent has read | Then |
|---|---|
| Anything from a private repository | Writes to public repositories are denied |
An issue, pull request or comment from an author outside OWNER, MEMBER and COLLABORATOR, or a job log | Each write needs human approval |
This does not depend on the model noticing an attack or on scanning text, so rewording or encoding the data does not get around it. The state survives restarts, and no tool can clear it. A person can:
uvx repoward flow status
uvx repoward flow reset
What it does not do:
single_repo: true.author_association is a coarse signal, and a compromised trusted account counts as trusted.trusted_associations is configurable.github_list_issues, github_get_issue, github_search_code, github_get_file,
ci_get_status and ci_get_job_logs.github_create_branch, github_commit_files, github_create_pull_request and
github_comment. Writes only reach branches with the configured prefix (agent/ by default),
pull requests are draft only by default, commit sizes are limited, nothing is forced or retried,
and text holding a recognizable credential is refused.github_merge_pull_request and github_delete_branch need human approval.
An approval covers one exact call at one exact commit, works once and expires. Merging is off
until a policy turns it on.