feat: add stage 4c agent and MCP tool governance - #33
Merged
Conversation
Stage 4c was the one part of the five-stage strategy this repository never carried. It governs the agent on a developer workstation rather than CI, so it ships as config files instead of a workflow. - .claude/settings.json: block reads of .env, secrets/, certificates and keys; require approval for egress (curl, wget, WebFetch) and for commands that are hard to undo (git push, docker push, kubectl apply); approve no .mcp.json server by default; keep claude.ai connectors out - .mcp.json: empty, so adding a server shows up as a PR diff rather than in someone's personal ~/.claude.json - CLAUDE.md: separate what the files enforce from what stays a human procedure (reading tool descriptions, judging the egress path), and give the version-pinned template for adding a server - README: the two stage-4 tables now name 4a, 4b and 4c, and the intro says which stages are workflows and which are config The intro also claimed all five stages were implemented while 4c was absent. That is now true rather than aspirational.
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.
4c는 이 저장소가 유일하게 담고 있지 않던 단계였습니다. CI가 아니라 개발자 워크스테이션의
에이전트를 대상으로 하므로 워크플로우가 아닌 설정 파일로 구현합니다.
담은 것
.claude/settings.json.env·secrets/·인증서·키 읽기 차단, 외부 통신(curl·wget·WebFetch)과 되돌리기 어려운 명령(git push·docker push·kubectl apply) 사람 승인,.mcp.json서버 자동 승인 안 함, claude.ai 커넥터 차단.mcp.json~/.claude.json)이 아니라 PR diff 로 드러나게 하는 자리CLAUDE.mdREADME.md설계 판단
형식적인 워크플로우를 만들지 않았습니다. MCP 설정 파일이 없는 저장소에서 MCP 스캐너를
돌리는 job 은 검사 대상이 없어 항상 통과합니다. 이 저장소가 3단계에서 경계하는 형태와 같습니다.
스캐너는 승인된 서버가 실제로 생긴 뒤, 토큰 없이 CI 에서 완주되는지 확인하고 추가하는 것이 맞습니다.
차단이 아니라 승인으로 두었습니다.
curl·git push를deny로 막으면 개발 중에 걸리는일이 잦아 설정 자체가 꺼집니다.
ask는 사람이 판단할 지점을 만들면서 작업을 막지 않습니다.저장소 설정으로 강제되지 않는 부분을 명시했습니다.
allowedMcpServers같은 서버 allowlist강제는 조직 관리 설정(
managed-settings.json)에서만 동작합니다.CLAUDE.md에 그렇게 적었습니다.확인한 것
.mcp.json·.claude/settings.jsonJSON 파싱 통과(
permissions.deny,permissions.ask,enabledMcpjsonServers,disableClaudeAiConnectors)남은 것
.gitignore가 없습니다.CLAUDE.md는.env를.gitignore에 넣으라고요구하는데 파일 자체가 없어 규칙이 비어 있습니다. 이번 PR 범위 밖이라 손대지 않았습니다.
disableClaudeAiConnectors는 Claude Code v2.1.182 이상에서 동작합니다.