Gateway 문제 해결
이 문서는 심층 런북입니다. 먼저 빠른 triage 흐름이 필요하다면 /help/troubleshooting부터 시작하세요.명령 사다리
다음 명령을 이 순서대로 먼저 실행하세요.openclaw gateway status에Runtime: running,RPC probe: ok가 표시됨openclaw doctor가 blocking config/service issue가 없다고 보고함openclaw channels status --probe가 채널을 connected/ready로 표시함
Anthropic 429: 긴 컨텍스트에 추가 사용량 필요
로그나 오류에 다음이 포함될 때 사용합니다.HTTP 429: rate_limit_error: Extra usage is required for long context requests.
- 선택된 Anthropic Opus/Sonnet 모델에
params.context1m: true가 설정되어 있는지 - 현재 Anthropic credential이 long-context 사용 대상인지
- 1M beta path가 필요한 긴 세션/모델 실행에서만 실패하는지
- 해당 모델의
context1m을 꺼서 일반 context window로 fallback합니다. - 과금 가능한 Anthropic API key를 사용하거나 subscription account에서 Anthropic Extra Usage를 활성화합니다.
- Anthropic long-context 요청이 거부돼도 계속 실행되도록 fallback model을 구성합니다.
- /providers/anthropic
- /reference/token-use
- /help/faq#why-am-i-seeing-http-429-ratelimiterror-from-anthropic
응답이 없음
채널은 올라와 있지만 답변이 없다면, 무엇이든 다시 연결하기 전에 routing과 policy부터 확인하세요.- DM sender의 pairing이 pending인지
- 그룹 mention gating(
requireMention,mentionPatterns)이 걸려 있는지 - 채널/그룹 allowlist가 맞는지
drop guild message (mention required-> mention 전에는 그룹 메시지를 무시함pairing request-> sender 승인 필요blocked/allowlist-> sender/channel이 정책에 의해 필터링됨
Dashboard / Control UI 연결 문제
dashboard 또는 Control UI가 연결되지 않으면 URL, auth mode, secure context 가정을 검증하세요.- probe URL과 dashboard URL이 맞는지
- client와 gateway의 auth mode/token이 일치하는지
- device identity가 필요한데 HTTP를 쓰고 있지는 않은지
device identity required-> secure context가 아니거나 device auth가 없음device nonce required/device nonce mismatch-> client가 challenge 기반 device auth flow(connect.challenge+device.nonce)를 완료하지 못함device signature invalid/device signature expired-> 현재 handshake에 대해 잘못된 payload를 서명했거나 timestamp가 오래됨AUTH_TOKEN_MISMATCH와canRetryWithDeviceToken=true-> cached device token으로 신뢰된 재시도 1회를 할 수 있음- 그 재시도 뒤에도
unauthorized가 반복됨 -> shared token/device token drift 가능성. token config를 새로 맞추고 device token을 재승인/rotate해야 할 수 있음 gateway connect failed:-> host/port/url 대상이 틀림
Auth detail code 빠른 매핑
실패한connect 응답의 error.details.code를 보고 다음 조치를 고르세요.
| Detail code | 의미 | 권장 조치 |
|---|---|---|
AUTH_TOKEN_MISSING | client가 필수 shared token을 보내지 않음 | client에 token을 넣고 다시 시도합니다. dashboard 경로라면 openclaw config get gateway.auth.token으로 확인한 뒤 Control UI 설정에 붙여 넣으세요. |
AUTH_TOKEN_MISMATCH | shared token이 gateway auth token과 다름 | canRetryWithDeviceToken=true면 신뢰된 재시도 1회를 허용하세요. 그래도 실패하면 token drift recovery checklist를 실행하세요. |
AUTH_DEVICE_TOKEN_MISMATCH | cached per-device token이 오래됐거나 폐기됨 | devices CLI로 device token을 rotate/re-approve한 뒤 다시 연결하세요. |
PAIRING_REQUIRED | device identity는 알려져 있지만 이 role에는 아직 승인되지 않음 | openclaw devices list 후 openclaw devices approve <requestId>로 승인하세요. |
connect.challenge를 기다리는지- challenge에 바인딩된 payload에 서명하는지
- 같은 challenge nonce를
connect.params.device.nonce로 보내는지
Gateway 서비스가 실행되지 않음
서비스는 설치됐지만 프로세스가 유지되지 않을 때 사용합니다.Runtime: stopped와 함께 exit hint가 나오는지- service config mismatch가 있는지 (
Config (cli)vsConfig (service)) - port/listener 충돌이 있는지
Gateway start blocked: set gateway.mode=local-> local gateway mode가 활성화되지 않음. config에서gateway.mode="local"로 바꾸거나openclaw configure를 실행하세요. Podman의 전용openclaw사용자로 실행 중이면 config는~openclaw/.openclaw/openclaw.json에 있습니다.refusing to bind gateway ... without auth-> non-loopback bind인데 token/password가 없음another gateway instance is already listening/EADDRINUSE-> port 충돌
채널은 연결됐지만 메시지가 흐르지 않음
채널 상태는 connected인데 메시지 흐름이 멈췄다면, policy와 permission, 채널별 delivery rule에 집중하세요.- DM policy(
pairing,allowlist,open,disabled) - 그룹 allowlist와 mention requirement
- 채널 API permission/scope 누락
mention required-> 그룹 mention policy 때문에 무시됨pairing/ pending approval trace -> sender가 아직 승인되지 않음missing_scope,not_in_channel,Forbidden,401/403-> channel auth/permission 이슈
Cron / heartbeat 전달 문제
cron이나 heartbeat가 실행되지 않았거나 전달되지 않았다면, 먼저 scheduler 상태를 보고 그다음 delivery target을 확인하세요.- cron이 활성화되어 있고 next wake가 존재하는지
- job run history 상태가
ok,skipped,error중 무엇인지 - heartbeat skip reason이
quiet-hours,requests-in-flight,alerts-disabled중 어떤 것인지
cron: scheduler disabled; jobs will not run automatically-> cron 비활성화cron: timer tick failed-> scheduler tick 실패. 파일/로그/런타임 오류를 확인heartbeat skipped와reason=quiet-hours-> active hours 바깥heartbeat: unknown accountId-> heartbeat delivery target의 account id가 잘못됨heartbeat skipped와reason=dm-blocked-> heartbeat 대상이 DM 스타일 목적지로 해석됐지만agents.defaults.heartbeat.directPolicy또는 agent override가block
페어링된 node에서 도구가 실패함
node는 paired 상태인데 도구가 실패한다면 foreground, permission, approval 상태를 분리해서 보세요.- node가 online이며 기대한 capability를 갖고 있는지
- camera/mic/location/screen에 대한 OS permission이 부여됐는지
- exec approval과 allowlist 상태
NODE_BACKGROUND_UNAVAILABLE-> node app이 foreground에 있어야 함*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED-> OS permission 부족SYSTEM_RUN_DENIED: approval required-> exec approval 대기 중SYSTEM_RUN_DENIED: allowlist miss-> allowlist에 없는 명령
브라우저 도구 실패
gateway 자체는 정상이지만 browser tool action만 실패할 때 사용합니다.- 유효한 browser executable path
- CDP profile reachability
profile="chrome"일 때 extension relay tab attachment
Failed to start Chrome CDP on port-> browser process가 시작하지 못함browser.executablePath not found-> 설정된 경로가 잘못됨Chrome extension relay is running, but no tab is connected-> extension relay가 탭에 붙지 못함Browser attachOnly is enabled ... not reachable-> attach-only profile에 연결 가능한 target이 없음
업그레이드 후 갑자기 문제가 생겼을 때
업그레이드 직후 깨지는 문제는 대부분 config drift이거나, 이전에는 느슨했던 기본값이 이제 엄격하게 강제되는 경우입니다.1) Auth와 URL override 동작이 바뀜
gateway.mode=remote라면 CLI call이 local 서비스가 아니라 remote를 보고 있을 수 있음- 명시적인
--url호출은 저장된 credential로 fallback하지 않음
gateway connect failed:-> URL 대상이 틀림unauthorized-> endpoint에는 닿았지만 auth가 틀림
2) Bind와 auth 가드레일이 더 엄격해짐
- non-loopback bind(
lan,tailnet,custom)에는 auth가 필요함 - 예전 키인
gateway.token은gateway.auth.token을 대체하지 않음
refusing to bind gateway ... without auth-> bind와 auth 조합이 맞지 않음RPC probe: failed인데 runtime은 running -> gateway는 살아 있지만 현재 auth/url로는 접근 불가
3) Pairing과 device identity 상태가 바뀜
- dashboard/node에 대해 pending device approval이 있는지
- policy나 identity 변경 뒤 DM pairing approval이 다시 필요한지
device identity required-> device auth가 충족되지 않음pairing required-> sender/device 승인이 필요함