BurningTimesAi/memory/org/feedback_permissions_portab...

99 lines
6.8 KiB
Markdown
Raw Normal View History

---
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 독립성이 보장된다.
## 자식 디렉토리 전파 원칙 (너드나비스 구조 특수사항)
Claude Code는 `.claude/` 폴더 1개만 프로젝트 루트로 인식하며 **부모 방향 auto-merge를 지원하지 않는다**. 너드나비스 조직 레포는 루트 외에 `개발팀/.claude/`·`기획팀/.claude/`가 이미 존재(agents·commands·skill-modules 용). 이 때문에 자식 디렉토리에서 세션을 시작하면 루트의 settings.json이 무시된다.
**해결 구조**:
- **SOT**: `.claude/settings.json` (루트). 모든 변경은 이 파일을 먼저 편집.
- **파생**: `개발팀/.claude/settings.json`·`기획팀/.claude/settings.json` — 루트 SOT의 복사본.
- **동기화**: `setup/setup_windows.ps1`이 루트 SOT → 두 부서로 자동 복제. 셋업 스크립트 실행 시마다 갱신.
- **수동 동기화 (스크립트 미실행 환경)**: 루트 settings.json 수정 후 두 부서 파일에도 동일 내용 반영 후 일괄 커밋.
**검증법**: 각 부서 디렉토리에서 `.claude/settings.json` 존재 여부 확인. 파일이 같은 내용인지 diff로 점검.
## 권장 구성
```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` 원칙).
## Windows Store(MSIX) 버전 Claude 앱 특수사항 (2026-04-15 실증)
PD님의 주 PC는 Windows Store에서 설치한 MSIX 버전 Claude 앱(`PackageFamilyName = Claude_pzs8sxrjxfjjc`, `AppId = Claude`)을 사용. 다음 3가지가 실전 안정화의 핵심으로 실증됨:
### 1. 세션 재시작 = 앱 프로세스 완전 종료
- 창 닫기·`New Session` 버튼만으로는 `.claude/settings.json`**reload 되지 않음**
- 반드시 작업 관리자(`Ctrl+Shift+Esc`)에서 **Claude 관련 모든 프로세스를 "작업 끝내기"** 해야 함
- 그 후 앱을 새로 실행해야 settings.json이 실제 로드됨
### 2. 부서별 진입은 바탕화면 바로가기로 표준화
- "New Session" 버튼은 **현재 열린 프로젝트 컨텍스트 내에서 새 대화**만 만듦 → 프로젝트 전환 안 됨
- 부서별 세션을 원하면 각 부서 폴더를 `WorkingDirectory`로 지정한 바로가기 생성
- MSIX 앱용 바로가기 스펙:
- `TargetPath = explorer.exe`
- `Arguments = shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude`
- `WorkingDirectory = <부서 폴더>`
- 자동화: `setup/setup_windows.ps1 -CreateShortcuts` 실행 (MSIX·일반 exe 모두 자동 탐지)
### 3. `/permissions` 슬래시 커맨드 미지원
- MSIX 버전 Claude 앱은 슬래시 커맨드를 **스킬 시스템**으로 처리 → `/permissions` 는 "Unknown skill" 반환
- 권한 확인은 앱 Settings UI 메뉴에서 수행
### 4. 세션별 프로젝트 폴더 전환은 **앱 입력창 위의 "폴더 칩" UI**가 정답 (2026-04-15 실증)
- 신규 세션 화면 입력창 바로 위에 칩 3종(로컬 · **폴더명** · 브랜치/워크트리)이 있음
- **폴더명 칩(🗂️ 아이콘)을 클릭**하면 프로젝트 폴더를 변경할 수 있음 (드롭다운 또는 폴더 선택창)
- git 루트 auto-fallback 우회·바로가기·URI·WorkingDirectory 등 **기술적 우회는 모두 불필요**
- 워크트리 체크박스(☑) 유지 시 Claude Code가 자동으로 `.claude/worktrees/<이름>/`에 격리 워크트리 생성 → Windows Store 앱의 single-instance 제약 속에서도 독립 세션 운용 가능
- **실수 교훈**: UI 가능성을 먼저 탐색하지 않고 바탕화면 바로가기·`claude://` URI·MSIX `shell:AppsFolder` 등 기술적 우회만 시도했던 과잉 대응. 앱 UI 탐색을 1순위로 둘 것
### 5. 바탕화면 바로가기 접근법은 Windows Store 앱에서 **불가** (확정)
- `TargetPath=explorer.exe` + `Arguments=shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude` + `WorkingDirectory=<부서 폴더>` 방식 시도했으나:
- 앱이 single-instance로 동작 → 이미 열려 있으면 바로가기는 **기존 창 포커스만** 수행
- 앱을 완전 종료 후 바로가기 클릭해도 WorkingDirectory는 **무시됨**
- 앱은 "마지막 열었던 프로젝트"를 자동 복원
- `setup_windows.ps1 -CreateShortcuts` 옵션은 non-MSIX 환경(CLI·VSCode 확장 등)에서만 유효 — Windows Store 앱 사용자는 폴더 칩 UI 사용
## 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 변경 후 **세션 재시작**으로 반영