OPENCLAW_2026
TASK_BRAIN_
APPROVAL_
LOG_TRIAGE.

// 문제: Task Brain 계열 업그레이드 후 승인 대기 고착, ClawHub 설치 차단, silent deny가 겹칩니다. 원인은 승인 카테고리·플러그인 신뢰 경계·launchd OPENCLAW_*openclaw.json과 이중화된 경우가 많습니다. 결과: 증상 매트릭스, 5단계 안전 롤아웃, 임계값 3, doctor → channels probe → logs. 참고: 업그레이드/인증 v2, 공격면, Docker/WS, install.sh, SSH/VNC, 요금제.

보안 운영 개념

1. 통제면은 단순한 DB 추가가 아니다

(1) 정책 vs 속도: 고위험 쓰기를 기본 차단하려는 제품과 CI의 항상 그린은 충돌합니다. 카테고리가 문서화되지 않으면 상태머신이 조용히 멈춥니다. (2) ClawHub: fail-closed는 “항상 최신 스킬”과 양립하기 어렵습니다. CLI 설치는 성공해도 런타임에서 정책이 거부하는 이중 실패가 납니다. (3) Gateway 인증: trusted proxy·혼합 토큰·트리거 축소 뒤 openclaw.json과 환경 변수의 이중 진실이 흔합니다. (4) 원격 Mac: SSH 세션의 openclaw logs가 launchd가 주입한 값과 다를 수 있습니다.

2. 증상 매트릭스(JSON 수정 전에 읽기)

신호가설첫 조치
승인 pending 무한시맨틱 카테고리 미허용카테고리 diff 출력, 읽기 전용 openclaw doctor
unsafe / blocked 설치다이제스트 불일치allowlist·핀 확인; prod에서 force-unsafe 기본 금지
401 / device auth인증 v2 + 드리프트Docker·업그레이드 가이드로 env/JSON 수렴
채널은 살아 있으나 자식 태스크 침묵트리거 축소 후 라우팅 오류openclaw channels probe 후 gateway·channel·tool 로그를 시간창으로 분리

3. 다섯 단계: 안전 롤아웃

  1. 스냅샷 + doctor: ~/.openclaw과 workspace를 보관하고 읽기 전용으로 기준선을 남깁니다.
  2. OPENCLAW_* 단일화: launchd plist·Compose env·shell profile을 목록화하고 중복 export를 삭제합니다.
  3. 승인 표 분리: 디스크 쓰기·셸 실행·설정 변경을 분류하고 변경마다 티켓을 남깁니다.
  4. 스테이징 드릴: 최소 스킬 팩을 fail-closed로 검증하고 해시를 CMDB에 기록합니다.
  5. 증거 게이트: probe가 녹색이 될 때까지 모델 라우팅을 바꾸지 않으며 로그는 시간창으로 자릅니다.
openclaw doctor -> openclaw channels probe -> time-boxed logs

4. 임계값(리뷰용)

  • gateway.auth.token복수 쓰기 경로가 남아 있으면 단일 진실로 줄일 때까지 P0 차단.
  • 정책 변경 후 24시간 이내 고위험 쓰기 리허설과 로그 발췌 아카이브—「테스트됨」의 근거.
  • 원격 Mac에서 OPENCLAW_GATEWAY_PORT가 supervision과 여러 홉 어긋나면 supervision을 먼저 수정.

5. FAQ

Docker 토큰은 맞는데 401? 디바이스 인증 v2와 노드 트리거 한도를 업그레이드 가이드에 따라 겹쳐 점검합니다.

먼저 전역 승인? 격리된 스테이징만. 프로덕션은 fail-closed와 카테고리 allowlist로 점진 개방.

스킬 핀? 예. digest·태그·설치 명령을 동일 변경 티켓에 두고 공격 표면 감사 주기와 맞춥니다.

6. 미니 사례

CI가 매일 최신 스킬을 넣고 프로덕션 게이트웨이가 개발 노트북과 workspace를 공유하던 팀은 야간 승인 적체와 아침 silent deny를 겪었습니다. 스킬 설치를 스테이징 잡으로 옮겨 해시 고정, 승인 표를 위험도별로 분할, OPENCLAW_*는 launchd만 사용하고 셸 중복을 제거했습니다. PR 규칙: gateway.auth를 건드리면 Compose env 대조표도 갱신해야 머지.

7. 마무리: Linux VPS·Mac·MACGPU

한계: 범용 Linux VPS는 권한 모델과 데스크톱 인접 채널이 달라 정책을 코드화하지 않으면 스크립트가 빨리 부패합니다. 원격 Mac: 익숙한 launchd 감독과 재시작 패턴. MACGPU: 하드 구매 전 24/7 Gateway를 시험할 원격 Apple Silicon 노드를 낮은 마찰로 임대(CTA의 요금제·도움말, 로그인 없이 열람 가능). 최종 게이트: 업그레이드 후 24시간 안에 probe와 고위험 리허설을 끝내고 로그에 request id와 정책 버전을 남깁니다.

내부 리뷰 패키지에는 doctor 출력 외에 승인 정책 버전, 스킬 핀 목록, OPENCLAW_*가 담긴 plist 발췌, channels probe 성공 시각을 포함하세요. probe 없는 “수정 완료”는 야간 재배포에서 재발합니다. 단일 호스트에 쓰기 게이트웨이를 이중 기동하지 말고, 로그는 gateway/channel/tool 삼분할 후 시간창으로 상관시키는 규칙을 운영 문서에 박아 두면 사후 설명 비용이 줄어듭니다.

8. 운영 체크리스트

야간 배포 후 첫 출근 전에도 동일 절차를 밟습니다. 업그레이드 직후에는 LastExitStatusThrottleInterval을 launchd 유닛에서 확인하고, 로그 디스크 사용량에 대한 회전·압축 정책을 점검하세요. Docker Compose와 혼용할 때는 컨테이너 내부의 127.0.0.1이 호스트와 다르다는 점을 설정에 명시적으로 적어 두어야 합니다. 장애 대응 시 request id 없이 “대략 재시작”만 반복하면 동일 증상이 재등장하므로, 재시작 전에 반드시 시간창을 좁힌 로그 샘플과 정책 버전을 남기십시오. on-call 체크리스트에 위 항목을 복사해 두면 신규 담당자도 같은 순서로 복구할 수 있습니다.