Credential 확인 우선순위
독립 실행형 Skill 런타임은 엄격한 3단계 우선순위를 사용하여 credential을 확인합니다. 관리형 외부 시크릿이 항상 로컬 파일보다 우선하므로 환경 시크릿이 제공될 때 토큰이 디스크에 중복 저장되지 않습니다.
- 1. XMEMO_KEY: 환경 변수 또는 관리형 시크릿 저장소(Doppler, 1Password, Vault). 권장됨; 로컬 credential 파일에 절대 복사되지 않습니다.
- 2. Meta Muse Secure Vault: 지원되는 Meta Muse 환경의 대체 볼트 확인.
- 3. 로컬 credential 파일: ~/.xmemo/skill-credentials.json(또는 $XMEMO_CREDENTIALS_PATH), 환경 credential이 설정되지 않았을 때 대체 수단으로만 읽습니다.
- OpenClaw egress 요구 사항: OpenClaw egress는 XMEMO_KEY 브랜치(auth-state.mjs) 내부에서 처리되는 전송 요구 사항입니다. OpenClaw 센티널이 감지되면 egress 프록시 접근성이 강제 적용됩니다. 이는 XMEMO_KEY 내의 전송 검증이며 별도의 credential 소스가 아닙니다.
- 토큰 노출 제로: 명령어와 doctor 진단은 활성 토큰이나 시크릿 접두사를 절대 출력하지 않습니다.
# Preferred: provide credential via environment or secret store
export XMEMO_KEY='<your-xmemo-token>'
# Inspect active credential source and scopes without printing secrets:
node scripts/xmemo-skill.mjs auth status --verify기기 로그인 및 명시적 일반 텍스트 선택
관리형 환경 키가 없는 경우 대화형 설정은 브라우저 기반 기기 인증을 사용합니다. 사용자가 브라우저에서 액세스를 승인하며 브라우저는 베어러 토큰 값을 절대 표시하지 않습니다.
- 명시적 일반 텍스트 동의: login 명령은 로컬 컴퓨터에 토큰을 암호화하지 않고 저장하는 것에 대한 정보에 입각한 동의를 확인하기 위해 --allow-plaintext 플래그가 필요합니다.
- 제한된 파일 권한: ~/.xmemo/skill-credentials.json 파일은 0600 POSIX 권한(소유자 전용 읽기/쓰기)으로 생성됩니다.
- 안전한 stdin 가져오기: auth add --from-stdin --allow-plaintext 명령을 사용하여 표준 입력으로 기존 토큰을 가져오면 명령줄 인수 및 셸 기록 로깅을 피할 수 있습니다.
- 기기 인증 엔드포인트: POST /v1/auth/device/start(흐름 시작), POST /v1/auth/device/token(폴링 및 교환), POST /v1/auth/token/validate(검증), POST /v1/auth/token/revoke-self(취소).
# Start interactive device login (requires explicit plaintext flag):
node scripts/xmemo-skill.mjs login --allow-plaintext
# Or pipe an existing token securely from standard input:
printf '%s' "$XMEMO_KEY" | node scripts/xmemo-skill.mjs auth add --from-stdin --allow-plaintext
# Verify active session status:
node scripts/xmemo-skill.mjs auth status --verify임시 등록 경계
무인 환경이거나 사용자가 정식 로그인을 거부하는 경우 Skill은 임시 메모리 샌드박스를 등록할 수 있습니다. 임시 메모리는 엄격하게 제한되며 단기적인 운영 연속성만을 목적으로 합니다.
- 무인 또는 거부 시에만 사용: node scripts/xmemo-skill.mjs register --reason <unattended|declined> --allow-plaintext.
- 용량 상한: 최대 100개 항목으로 제한됩니다.
- 보존 TTL: 14일 비활성 TTL 및 30일 절대 최대 수명.
- 2단계 클레임 핸드오프: 운영자가 임시 계정을 클레임하고 정식 credential에 바인딩할 수 있는 바인딩 URL(bind_url)을 생성합니다.
- 클레임 관리 명령: auth claim-status는 보류 중인 클레임을 검사하고, auth claim-confirm은 정식 토큰 핸드오프를 수락하며, auth claim-deny는 바인딩을 거부합니다.
- 샌드박스 제한 사항: 임시 계정은 재시작 스냅샷(restart-snapshot)을 캡처하거나 Knowledge 베이스(recall-context --include_knowledge true)에 액세스할 수 없습니다.
# Register temporary sandbox:
node scripts/xmemo-skill.mjs register --reason unattended --allow-plaintext
# Inspect and manage claim binding:
node scripts/xmemo-skill.mjs auth claim-status --allow-plaintext
node scripts/xmemo-skill.mjs auth claim-confirm --allow-plaintext
node scripts/xmemo-skill.mjs auth claim-deny --allow-plaintext로그아웃 및 제공자별 적절한 취소
로그아웃하면 로컬 credential 파일 연결이 해제되고 서버에서 활성 세션 토큰이 자체 취소됩니다. 외부 시크릿 제공자는 자체 환경에서 관리해야 합니다.
- 로컬 세션 로그아웃: node scripts/xmemo-skill.mjs logout 명령은 ~/.xmemo/skill-credentials.json 파일을 제거하고 /v1/auth/token/revoke-self 엔드포인트를 호출합니다.
- 외부 환경 토큰: XMEMO_KEY가 활성 credential을 제공하는 경우 --revoke-environment-token 플래그를 명시적으로 전달하지 않는 한 로그아웃해도 해당 토큰은 그대로 유지됩니다.
- 로컬 제거는 전역 취소가 아님: 로컬 skill 디렉터리를 제거하거나 로컬에서 로그아웃해도 클라우드 시크릿 볼트, CI/CD 러너 또는 다른 컴퓨터에 저장된 토큰은 취소되지 않습니다.
- 외부 정리: 셸에서 XMEMO_KEY 설정을 해제하거나 시크릿 관리자에서 시크릿을 삭제하여 액세스 권한을 영구적으로 취소합니다.
# Log out and revoke local credential file:
node scripts/xmemo-skill.mjs logout
# Log out and revoke external environment token remotely:
node scripts/xmemo-skill.mjs logout --revoke-environment-tokenSkill 인증
Skill은 호스팅형 MCP 서버를 직접 마운트하지 않는 에이전트를 위한 지침 및 명령 경로입니다.
출처: XMemo Skills