feat(permissions): 조직 공용 .claude/settings.json 신설 - PC 간 일괄 승인 일관성 보장
PD님의 일괄 승인 원칙(memory/org/feedback_md_approval·feedback_approval_process)은 메모리 지침일 뿐 Claude Code harness의 permission system과 독립적으로 동작. 새 PC에서 .claude/settings.local.json이 비어있어 매번 승인 요구 발생하던 문제를 근본 해결. - .claude/settings.json (git 커밋 대상): 조직 공용 포괄 허용 - Edit·Write·MultiEdit·NotebookEdit·TodoWrite·Read·Glob·Grep·LS 전부 허용 - Bash: git·gh·ls·cat·find·grep·mkdir·cp·mv·powershell·node·python·dotnet 등 안전 명령 허용 - deny: rm -rf /·rm -rf ~·sudo·dd·mkfs·포크봄·시스템 디렉토리 쓰기 - memory/org/feedback_permissions_portability.md: harness permission과 메모리 지침의 2계층 분리 구조 + PC 독립성 보장 메커니즘 교훈 세션 재시작 후 적용됨. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
562a9bc5ca
commit
1e89f1793e
|
|
@ -0,0 +1,72 @@
|
||||||
|
{
|
||||||
|
"_description": "너드나비스 조직 공용 Claude Code permission 설정. PD님의 일괄 승인 원칙(memory/org/feedback_md_approval.md·feedback_approval_process.md)을 harness 차원에서 구현. 모든 PC에서 동일하게 적용되도록 git 커밋 대상. 개별 PC 예외·실험적 명령은 .claude/settings.local.json(gitignore)에 기록.",
|
||||||
|
"permissions": {
|
||||||
|
"allow": [
|
||||||
|
"Read",
|
||||||
|
"Glob",
|
||||||
|
"Grep",
|
||||||
|
"LS",
|
||||||
|
"TodoWrite",
|
||||||
|
"Edit",
|
||||||
|
"Write",
|
||||||
|
"MultiEdit",
|
||||||
|
"NotebookEdit",
|
||||||
|
"Bash(git:*)",
|
||||||
|
"Bash(gh:*)",
|
||||||
|
"Bash(ls:*)",
|
||||||
|
"Bash(cat:*)",
|
||||||
|
"Bash(head:*)",
|
||||||
|
"Bash(tail:*)",
|
||||||
|
"Bash(grep:*)",
|
||||||
|
"Bash(rg:*)",
|
||||||
|
"Bash(find:*)",
|
||||||
|
"Bash(echo:*)",
|
||||||
|
"Bash(pwd)",
|
||||||
|
"Bash(cd:*)",
|
||||||
|
"Bash(mkdir:*)",
|
||||||
|
"Bash(touch:*)",
|
||||||
|
"Bash(cp:*)",
|
||||||
|
"Bash(mv:*)",
|
||||||
|
"Bash(diff:*)",
|
||||||
|
"Bash(wc:*)",
|
||||||
|
"Bash(sort:*)",
|
||||||
|
"Bash(uniq:*)",
|
||||||
|
"Bash(tr:*)",
|
||||||
|
"Bash(sed:*)",
|
||||||
|
"Bash(awk:*)",
|
||||||
|
"Bash(xxd:*)",
|
||||||
|
"Bash(printf:*)",
|
||||||
|
"Bash(true)",
|
||||||
|
"Bash(false)",
|
||||||
|
"Bash(powershell.exe:*)",
|
||||||
|
"Bash(powershell:*)",
|
||||||
|
"Bash(fsutil reparsepoint:*)",
|
||||||
|
"Bash(npm run:*)",
|
||||||
|
"Bash(npx:*)",
|
||||||
|
"Bash(node:*)",
|
||||||
|
"Bash(python:*)",
|
||||||
|
"Bash(python3:*)",
|
||||||
|
"Bash(pytest:*)",
|
||||||
|
"Bash(dotnet:*)",
|
||||||
|
"WebFetch",
|
||||||
|
"WebSearch"
|
||||||
|
],
|
||||||
|
"deny": [
|
||||||
|
"Bash(rm -rf /*)",
|
||||||
|
"Bash(rm -rf ~*)",
|
||||||
|
"Bash(rm -rf $HOME*)",
|
||||||
|
"Bash(sudo:*)",
|
||||||
|
"Bash(chmod 777:*)",
|
||||||
|
"Bash(format:*)",
|
||||||
|
"Bash(dd:*)",
|
||||||
|
"Bash(mkfs:*)",
|
||||||
|
"Bash(:(){ :|:& };:)",
|
||||||
|
"Write(/etc/**)",
|
||||||
|
"Write(/System/**)",
|
||||||
|
"Write(C:/Windows/**)",
|
||||||
|
"Edit(/etc/**)",
|
||||||
|
"Edit(/System/**)",
|
||||||
|
"Edit(C:/Windows/**)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,3 +6,4 @@
|
||||||
- [셋팅 점검은 동작·실체까지 검증](feedback_setup_verification.md) — 파일 존재만이 아니라 실파일·junction reparse point·setup 실행 결과까지 확인
|
- [셋팅 점검은 동작·실체까지 검증](feedback_setup_verification.md) — 파일 존재만이 아니라 실파일·junction reparse point·setup 실행 결과까지 확인
|
||||||
- [인사이트 즉시 메모리 기록 원칙](feedback_insight_capture.md) — 노하우·교훈·재발방지 룰은 발견 즉시 memory/org/ 에 기록하여 조직 자산으로 축적
|
- [인사이트 즉시 메모리 기록 원칙](feedback_insight_capture.md) — 노하우·교훈·재발방지 룰은 발견 즉시 memory/org/ 에 기록하여 조직 자산으로 축적
|
||||||
- [PD 지시 위임 동사 본인처리 우회 금지](feedback_delegation_discipline.md) — "~하라고 해" 등 위임 동사는 반드시 hand-off. 점검 위임 시 3축(파일·OS 동작·실행 결과) 검증 의무 포함
|
- [PD 지시 위임 동사 본인처리 우회 금지](feedback_delegation_discipline.md) — "~하라고 해" 등 위임 동사는 반드시 hand-off. 점검 위임 시 3축(파일·OS 동작·실행 결과) 검증 의무 포함
|
||||||
|
- [PC 간 승인 설정 일관성](feedback_permissions_portability.md) — 일괄 승인은 `.claude/settings.json` 커밋으로만 PC 독립 보장. settings.local.json(.gitignore)은 PC 이동 시 소실
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
---
|
||||||
|
name: PC 간 승인 설정 일관성은 .claude/settings.json 커밋으로만 보장
|
||||||
|
description: PD님의 일괄 승인 원칙을 PC 간 일관되게 유지하려면 조직 공용 `.claude/settings.json`을 git 커밋해야 함. memory/org/의 "일괄 승인" 메모리는 행동 지침일 뿐 harness의 permission system과 분리되어 있음.
|
||||||
|
type: feedback
|
||||||
|
---
|
||||||
|
|
||||||
|
Claude Code의 승인 체계는 **2계층**으로 분리되어 있다:
|
||||||
|
|
||||||
|
1. **Harness permission (`.claude/settings.json`)** — Claude Code 런타임이 도구 실행 전에 참조하는 allow/deny 규칙. 없으면 매번 사용자에게 승인 요청.
|
||||||
|
2. **메모리 지침 (`memory/org/feedback_*.md`)** — Claude의 행동 기준. 사용자 승인 여부와 무관하게 Claude가 어떻게 판단·행동할지의 지침.
|
||||||
|
|
||||||
|
**두 계층은 독립적으로 동작한다.** 메모리에 "일괄 승인" 원칙이 있어도 settings.json이 없으면 harness가 매번 승인을 요구한다.
|
||||||
|
|
||||||
|
## PC 간 일관성
|
||||||
|
|
||||||
|
- `.claude/settings.json` — git 커밋 대상, 모든 PC에서 clone·pull로 자동 적용 ✅
|
||||||
|
- `.claude/settings.local.json` — `.gitignore` 대상, 세션별 개별 명령 누적 기록 ❌ PC 이동 시 소실
|
||||||
|
- `~/.claude/settings.json` — 사용자 홈 설정, PC마다 별도 관리 필요
|
||||||
|
|
||||||
|
**결론**: 조직 공용 permission은 반드시 `.claude/settings.json`(프로젝트 루트)에 선언·커밋해야 PC 독립성이 보장된다.
|
||||||
|
|
||||||
|
## 권장 구성
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"permissions": {
|
||||||
|
"allow": ["Edit", "Write", "MultiEdit", "TodoWrite", "Bash(git:*)", ...],
|
||||||
|
"deny": ["Bash(rm -rf /*)", "Bash(sudo:*)", ...]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- 포괄 허용: Edit·Write·MultiEdit·NotebookEdit·TodoWrite·Read·Glob·Grep
|
||||||
|
- 안전 Bash: git·gh·ls·cat·find·grep·mkdir·cp·mv·powershell 등
|
||||||
|
- 위험 deny: rm -rf /·rm -rf ~·sudo·dd·mkfs·포크 봄·/etc /System C:/Windows 쓰기
|
||||||
|
|
||||||
|
## 적용 타이밍
|
||||||
|
|
||||||
|
`.claude/settings.json` 변경은 **세션 재시작 후 적용**된다. PD님께 사전 고지 필수 (`feedback_session_restart.md` 원칙).
|
||||||
|
|
||||||
|
## Why
|
||||||
|
|
||||||
|
2026-04-15 PD님이 새 PC에서 "md 파일 수정 시 매번 승인 요구" 이슈 지적. 이전 PC에선 일괄 승인 상태였으나 새 PC에선 `.claude/settings.local.json`이 비어있어 개별 승인 요구 발생. 조직 레포에 `.claude/settings.json`이 커밋되어 있지 않아 PC 간 승인 설정이 독립적으로 관리되는 구조였음. 근본 해결을 위해 조직 공용 settings.json 신설·커밋.
|
||||||
|
|
||||||
|
## How to apply
|
||||||
|
|
||||||
|
- 새 PC 셋업 시 `.claude/settings.json`이 자동 로드되므로 별도 셋업 불필요
|
||||||
|
- 조직 공통 허용 규칙 변경은 본 파일을 편집·커밋
|
||||||
|
- PC 고유의 임시·실험적 허용은 `.claude/settings.local.json`에 추가 (자동 누적)
|
||||||
|
- settings.json 변경 후 **세션 재시작**으로 반영
|
||||||
Loading…
Reference in New Issue