Repository navigation
Isolate public and internal GitHub access profiles - #61
Merged
Merged
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
A public-to-private repository transition can bypass the visibility recheck on HTTP 404, causing duplicate detection to report successful built-in fallback instead of denied access.
1 open issue
What changed in this PR
This PR separates IssueLens GitHub access into public-only automation and default chat, plus explicitly requested, read-only internal-analysis chat.
Changes:
- Add repository visibility checks across GitHub data paths and omit App credentials from public image downloads.
- Isolate chat history by user, access profile, and conversation; restrict tools, permissions, and discovery.
- Add regression coverage and document compatibility limits and deployment prerequisites.
| File | Description |
|---|---|
tests/test_team_memory_instructions.py |
Update agent registration and tool allowlist assertions. |
tests/test_host_telemetry.py |
Cover profile isolation, history rejection, and SDK restrictions. |
tests/test_agent_prompts.py |
Update profile-aware prompt and client wiring assertions. |
skills/find-duplicates/SKILL.md |
Define public-result limits and private-analysis restrictions. |
main.py |
Configure access profiles, restricted tools, and isolated chat sessions. |
github_app_mcp/tests/test_public_access.py |
Add public-access and visibility-change regression coverage. |
github_app_mcp/src/issuelens_github_mcp/server.py |
Default standalone MCP to public-only access. |
github_app_mcp/src/issuelens_github_mcp/policy.py |
Prevent permission denials from becoming missing-policy fallbacks. |
github_app_mcp/src/issuelens_github_mcp/github.py |
Enforce visibility checks and protect wiki and image access. |
github_app_mcp/README.md |
Document MCP access profiles and configuration. |
docs/guide.md |
Explain internal chat, compatibility, and trusted-ingress requirements. |
agents/issuelens.md |
Add public-session confidentiality instructions. |
agents/internal-analysis.md |
Introduce the read-only internal duplicate-analysis prompt. |
.github/copilot-instructions.md |
Document profile boundaries and the internal-analysis agent. |
.github/actions/issuelens/README.md |
Clarify public-only invocation behavior. |
.env.example |
Mark generic toolbox configuration as ignored. |
Review effort: Balanced
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Confidentiality depends on trusted Foundry identity ingress and live hosted SDK isolation, neither of which is established by the mocked tests and both require human rollout validation.
No open issues 🎉
1 resolved since last review
Review effort: Balanced
Changyong Gong (chagong)
deleted the
chagong-msrc-ticket-investigation
branch
November 9, 2026 06:53
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.

Summary
Compatibility and deployment prerequisites
All invocations are public-only, including Actions issue triage, direct tasks, and team-memory jobs. Private-target automation and private wiki destinations are rejected. Automatic public duplicate detection searches public candidates only; private-inclusive results remain in separate internal chat and must not be handed back to public triage. Public-target triage retains its registered capabilities and authorized writes. Confirm consumer repository/wiki visibility before deploying.
Visibility rechecks increase GitHub API traffic and are not an atomic privacy transaction. Historically public content and private material supplied directly in caller text/attachments cannot be retroactively classified or protected by repository visibility checks.
Internal analysis requires maintainer-authenticated ingress supplying a trusted platform identity. This PR does not create or verify that ingress, add per-repository maintainer authorization, or establish live hosted SDK/model routing. No deployment or production remediation verification has occurred.
This is a confidentiality-profile change, not an issue-bound write-authorization implementation, deterministic maintainer-command parser, manual workflow approval gate, or credential-broker change.
Validation
The separately attempted full application suite is not green on this Windows environment: deployment-workflow subtests require missing
jq, and an unchanged clean-ZIP packaging test encounters a Windows Rich/platform subprocess interaction. Complete Ubuntu application, MCP, packaging, and workflow CI should be reviewed before merge. No Foundry deployment was performed or requested.