Skip to content

feat: add stage 4c agent and MCP tool governance - #33

Merged
haksungjang merged 1 commit into
mainfrom
feat/stage-4c-agent-governance
Aug 12, 2026
Merged

feat: add stage 4c agent and MCP tool governance#33
haksungjang merged 1 commit into
mainfrom
feat/stage-4c-agent-governance

Conversation

@haksungjang

Copy link
Copy Markdown
Contributor

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.md 파일로 강제되는 것과 절차로 지키는 것을 구분, 버전 고정 템플릿
README.md 4단계 표를 4a·4b·4c 로 구분, 도입 문장 정정

설계 판단

형식적인 워크플로우를 만들지 않았습니다. MCP 설정 파일이 없는 저장소에서 MCP 스캐너를
돌리는 job 은 검사 대상이 없어 항상 통과합니다. 이 저장소가 3단계에서 경계하는 형태와 같습니다.
스캐너는 승인된 서버가 실제로 생긴 뒤, 토큰 없이 CI 에서 완주되는지 확인하고 추가하는 것이 맞습니다.

차단이 아니라 승인으로 두었습니다. curl·git pushdeny 로 막으면 개발 중에 걸리는
일이 잦아 설정 자체가 꺼집니다. ask 는 사람이 판단할 지점을 만들면서 작업을 막지 않습니다.

저장소 설정으로 강제되지 않는 부분을 명시했습니다. allowedMcpServers 같은 서버 allowlist
강제는 조직 관리 설정(managed-settings.json)에서만 동작합니다. CLAUDE.md 에 그렇게 적었습니다.

확인한 것

  • .mcp.json·.claude/settings.json JSON 파싱 통과
  • 사용한 설정 키 네 개가 모두 Claude Code 설정 문서에 있는 키인지 대조
    (permissions.deny, permissions.ask, enabledMcpjsonServers, disableClaudeAiConnectors)
  • README·CLAUDE.md 에 추가한 외부 링크 7개 모두 200

남은 것

  • 이 저장소에는 .gitignore 가 없습니다. CLAUDE.md.env.gitignore 에 넣으라고
    요구하는데 파일 자체가 없어 규칙이 비어 있습니다. 이번 PR 범위 밖이라 손대지 않았습니다.
  • disableClaudeAiConnectors 는 Claude Code v2.1.182 이상에서 동작합니다.

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.
@haksungjang
haksungjang merged commit dcf1023 into main Aug 12, 2026
8 of 9 checks passed
@haksungjang
haksungjang deleted the feat/stage-4c-agent-governance branch August 12, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant