Sanctum LLM operations reports · Stage 2 Topic HTML
CWD 워커 범위 경계
40-worker-agent-operations / 보고서

CWD 워커 범위 경계 향상 보고서

보고서 목적

이 보고서는 Sanctum에서 cwd 기반 워커의 범위 경계를 어떻게 이해하고 집행해야 하는지 정리한다. 핵심 목적은 cwd를 작업 편의 힌트로 사용하되 hard write boundary로 오해하지 않게 하는 것이다.

핵심 결론

cwd는 워커의 시작 위치일 뿐 보안 경계가 아니다. 도구가 상위 디렉터리나 절대 경로를 수정할 수 있다면 wallet-api cwd의 워커도 kms-api, contracts/, rust-mpc를 건드릴 수 있다.

  • 문서 경계: root/service AGENTS.md와 service llm-context/가 role, read/write/propose-only, handoff 규칙을 설명한다.
  • 런타임 경계: discord-codex-bot runtime이 structured metadata, write allowlist, approval scope, diff guard를 적용한다.
  • 환경 경계: 고위험 영역에는 sparse worktree, container, read-only mount, per-worker checkout을 적용한다.

Graphify와 RAG는 경계 집행 계층이 아니다. write authorization은 canonical policy와 runtime metadata에서만 결정해야 한다.

원본 문서의 주요 내용

원본 문서는 read, write, propose-only 세 범주로 Sanctum 워커 경계를 분류한다. Read는 이해와 검증을 위한 열람 범위, write는 실제 diff를 만들 수 있는 범위, propose-only는 변경 필요성을 제안하지만 직접 수정하지 않는 범위다.

wallet-api worker의 write scope는 wallet-api/**, wallet-api/AGENTS.md, wallet-api/llm-context/**, wallet 전용 테스트로 제한된다. contracts/**, kms-api/**, hd-manager/**, root e2e harness는 읽거나 영향 분석은 가능하지만 직접 수정하지 않는다.

kms-api는 secret-safe boundary를 갖고 sibling service와 contract 변경을 handoff한다. hd-manager는 derivation semantics를 담당하지만 wallet/KMS implementation 변경은 propose-only다. MPC manager와 party node worker도 Rust workspace 내부에서 서로 다른 소유권을 가져야 한다.

Sanctum 적용 해석

Sanctum에서 cwd 경계는 운영 UX에는 중요하지만 실제 위험은 cwd 밖 파일 수정 가능성에 있다. wallet-api worker가 KMS contract mismatch를 발견했을 때 ../kms-api../contracts를 직접 고치면 ownership과 review 책임이 불명확해진다.

권장 metadata는 worker, cwd, writeAllowlist, readHints, proposeOnly, handoffOwner를 분리해 기록한다. 이 metadata는 자연어 키워드 파서가 아니라 structured handoff, operator approval record, runtime registry, 서버 측 allowlist에서 확정해야 한다.

운영 판단

  • cwdwriteAllowlist를 분리한다.
  • Sanctum cross-service flow 이해를 위해 read scope는 write scope보다 넓게 둔다.
  • diff guard를 final review가 아니라 저장 또는 완료 전 runtime gate로 둔다.
  • Codex App workspace separation은 보조 수단으로만 사용하고 enforced worker는 runtime 경계에서 실행한다.

리스크와 가드레일

  • accidental sibling service edits: sibling service를 propose-only로 두고 diff guard로 차단한다.
  • root-level config creep: root files는 root/e2e agent 또는 explicit multi-service approval에서만 write한다.
  • contract duplication: service llm-context/contracts.md는 mapping으로 유지한다.
  • Graphify-driven overreach: Graphify 결과는 navigation evidence only로 표시한다.
  • diff guard afterthought: worker 시작 시 allowlist를 확정하고 종료 전 자동 diff guard를 실행한다.

실행 체크리스트

작업 시작 전에는 worker id, cwd, write allowlist, read hints, propose-only path, service 문서, canonical contracts 경로를 확인한다. 작업 중에는 sibling service 수정 필요성, contract mismatch, Graphify/source 충돌, derived-only 근거를 handoff로 처리한다. 완료 전에는 diff guard, blocked diff 보고, 테스트 구분, secret-like content 검사를 수행한다.