Gateway
인증 자격 증명 의미 체계
이 문서는 다음 전반에서 사용되는 표준 자격 증명 적격성 및 확인 의미 체계를 정의합니다.
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
목표는 선택 시점과 런타임 동작을 일치시키는 것입니다.
안정적인 프로브 이유 코드
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
토큰 자격 증명
토큰 자격 증명(type: "token")은 인라인 token 및/또는 tokenRef를 지원합니다.
적격성 규칙
- 토큰 프로필은
token과tokenRef가 모두 없을 때 부적격입니다. expires는 선택 사항입니다.expires가 있으면0보다 큰 유한 숫자여야 합니다.expires가 잘못된 경우(NaN,0, 음수, 유한하지 않음, 또는 잘못된 타입) 프로필은invalid_expires로 부적격입니다.expires가 과거 시점이면 프로필은expired로 부적격입니다.tokenRef는expires검증을 우회하지 않습니다.
확인 규칙
- 확인자의 의미 체계는
expires에 대한 적격성 의미 체계와 일치합니다. - 적격 프로필의 경우 토큰 자료는 인라인 값 또는
tokenRef에서 확인될 수 있습니다. - 확인할 수 없는 참조는
models status --probe출력에unresolved_ref를 생성합니다.
에이전트 복사 이식성
에이전트 인증 상속은 읽기 전달 방식입니다. 에이전트에 로컬 프로필이 없으면 런타임에 비밀 자료를 자체 auth-profiles.json으로 복사하지 않고도 기본/메인 에이전트 저장소에서 프로필을 확인할 수 있습니다.
openclaw agents add와 같은 명시적 복사 흐름은 이 이식성 정책을 사용합니다.
api_key프로필은copyToAgents: false가 아닌 한 이식 가능합니다.token프로필은copyToAgents: false가 아닌 한 이식 가능합니다.oauth프로필은 새로 고침 토큰이 단일 사용 또는 회전에 민감할 수 있으므로 기본적으로 이식할 수 없습니다.- Provider 소유 OAuth 흐름은 에이전트 간 새로 고침 자료 복사가 안전하다고 알려진 경우에만
copyToAgents: true로 옵트인할 수 있습니다.
비이식 프로필은 대상 에이전트가 별도로 로그인하여 자체 로컬 프로필을 만들지 않는 한 읽기 전달 상속을 통해 계속 사용할 수 있습니다.
구성 전용 인증 경로
mode: "aws-sdk"가 있는 auth.profiles 항목은 저장된 자격 증명이 아니라 라우팅 메타데이터입니다. 대상 Provider가 models.providers.<id>.auth: "aws-sdk" 또는 내장 Amazon Bedrock 기본 AWS SDK 경로를 사용할 때 유효합니다. 이러한 프로필 ID는 auth-profiles.json에 일치하는 항목이 없더라도 auth.order와 세션 재정의에 나타날 수 있습니다.
auth-profiles.json에 type: "aws-sdk"를 쓰지 마세요. 레거시 설치에 이러한 표시가 있으면 openclaw doctor --fix가 이를 auth.profiles로 옮기고 자격 증명 저장소에서 해당 표시를 제거합니다.
명시적 인증 순서 필터링
- Provider에 대해
auth.order.<provider>또는 인증 저장소 순서 재정의가 설정된 경우,models status --probe는 해당 Provider의 확인된 인증 순서에 남아 있는 프로필 ID만 프로브합니다. - 명시적 순서에서 누락된 해당 Provider의 저장된 프로필은 나중에 조용히 시도되지 않습니다. 프로브 출력은 이를
reasonCode: excluded_by_auth_order및 세부 정보Excluded by auth.order for this provider.로 보고합니다.
프로브 대상 확인
- 프로브 대상은 인증 프로필, 환경 자격 증명 또는
models.json에서 올 수 있습니다. - Provider에 자격 증명이 있지만 OpenClaw가 이에 대해 프로브 가능한 모델 후보를 확인할 수 없는 경우,
models status --probe는reasonCode: no_model과 함께status: no_model을 보고합니다.
외부 CLI 자격 증명 검색
- 외부 CLI가 소유한 런타임 전용 자격 증명은 Provider, 런타임 또는 인증 프로필이 현재 작업 범위에 있거나, 해당 외부 소스에 대한 저장된 로컬 프로필이 이미 있을 때만 검색됩니다.
- 인증 저장소 호출자는 명시적인 외부 CLI 검색 모드를 선택해야 합니다. 지속된/Plugin 인증만 사용하는 경우
none, 이미 저장된 외부 CLI 프로필을 새로 고치는 경우existing, 구체적인 Provider/프로필 집합의 경우scoped를 사용합니다. - 읽기 전용/상태 경로는
allowKeychainPrompt: false를 전달합니다. 이 경로는 파일 기반 외부 CLI 자격 증명만 사용하며 macOS Keychain 결과를 읽거나 재사용하지 않습니다.
OAuth SecretRef 정책 가드
- SecretRef 입력은 정적 자격 증명 전용입니다.
- 프로필 자격 증명이
type: "oauth"이면 해당 프로필 자격 증명 자료에는 SecretRef 객체가 지원되지 않습니다. auth.profiles.<id>.mode가"oauth"이면 해당 프로필에 대한 SecretRef 기반keyRef/tokenRef입력이 거부됩니다.- 위반은 시작/다시 로드 인증 확인 경로에서 하드 실패입니다.
레거시 호환 메시징
스크립트 호환성을 위해 프로브 오류는 이 첫 줄을 변경하지 않고 유지합니다.
Auth profile credentials are missing or expired.
사람이 읽기 쉬운 세부 정보와 안정적인 이유 코드는 이후 줄에 추가될 수 있습니다.