Community코딩 & 개발github.com

SAP 강제자

MCP 도구 실행 전에 SAFE 인증 프로토콜(SAP) 검사를 강제하는 OpenClaw 스킬입니다.

SAP 강제자란 무엇인가요?

이 스킬은 모든 MCP 도구 호출에 대해 SAP/1.0 권한 부여를 강제합니다. 호출하는 애플리케이션의 식별자(app_id)를 사용하여 SAP 게이트를 통해 권한을 확인하고, 비정상 종료 코드가 반환되면 도구 호출을 거부합니다. 권한이 부여되면 정상적으로 도구 호출이 진행되며, 거부 시에는 'sap-gate' 명령어를 통해 문제를 진단하고 사용자에게 명확한 오류 메시지를 표시합니다. 이는 Cursor, Claude Code 등 MCP 기반 도구에서 안전한 애플리케이션 권한 관리를 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add rudi193-cmd/openclaw-skill-sap

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

SAP 강제자은(는) 무엇을 하나요?

모든 MCP 도구 호출에 대해 SAP/1.0 권한 부여를 강제합니다. SAFE 매니페스트가 없으면 실행되지 않습니다.

작동 방식

MCP 도구 호출을 디스패치하기 전에 다음 명령을 실행합니다:

sap-gate verify <app_id>

여기서 app_id는 호출 애플리케이션의 식별자입니다. 이 명령이 0이 아닌 값을 반환하면 도구 호출을 거부합니다.

권한 부여 시

도구 호출을 정상적으로 진행합니다. 허가가 자동으로 ~/.sap/log/grants.jsonl에 기록됩니다.

권한 거부 시

  1. 도구 호출을 실행하지 않습니다
  2. 사용자에게 실패를 표시합니다:

    "도구 호출 거부됨: <app_id>이(가) 인증되지 않았습니다. SAFE 폴더가 존재하고 매니페스트가 서명되었는지 확인하세요."

  3. 거부가 자동으로 ~/.sap/log/gaps.jsonl에 기록됩니다
  4. 명시적인 사용자 지시 없이는 재시도하지 않습니다

새 애플리케이션 등록

새 app_id를 인증하려면:

# 1. SAFE 폴더 및 매니페스트 템플릿 생성
sap-gate init <app_id>

# 2. ~/.sap/Applications/<app_id>/safe-app-manifest.json 편집

# 3. GPG 키로 서명
gpg --detach-sign --armor ~/.sap/Applications/<app_id>/safe-app-manifest.json
mv ~/.sap/Applications/<app_id>/safe-app-manifest.json.asc \
   ~/.sap/Applications/<app_id>/safe-app-manifest.json.sig

# 4. 확인
sap-gate verify <app_id>

권한 취소

SAFE 폴더 또는 .sig 파일을 삭제합니다:

# 서명을 제거하여 권한 취소 (재인증을 위해 매니페스트는 보존)
rm ~/.sap/Applications/<app_id>/safe-app-manifest.json.sig

# 완전히 제거
rm -rf ~/.sap/Applications/<app_id>/

사전 요구 사항

  • openclaw-sap-gate 설치됨: pip install openclaw-sap-gate
  • GPG 키 구성됨: gpg --list-keys
  • SAP_SAFE_ROOT 환경 변수 설정 (기본값: ~/.sap/Applications)

프로토콜 참조

SAP/1.0 RFC: https://github.com/rudi193-cmd/sap-rfc

관련 스킬