3.22는 오래된 아키텍처를 뜯어내고 기반을 다시 쌓았습니다. 12개의 Breaking Changes, 새로운 플러그인 레지스트리, 30개의 보안 패치. OpenClaw 역사상 가장 큰 릴리스였습니다.
동시에 많은 것이 깨졌습니다.
3.23은 환자가 수술을 무사히 넘겼는지 확인하는 릴리스입니다. Breaking Changes는 3개 — 모두 전향적인 변경입니다. 40개 이상의 수정 — 대부분 3.22가 드러낸 문제를 수습하는 것들입니다. 릴리스 간격은 단 하루. 기다릴 수 없는 문제들이 있었기 때문입니다.
Breaking Changes
이번에는 딱 3개. 여러분이 쓰고 있는 것을 삭제하는 건 하나도 없습니다.
Qwen DashScope 표준 엔드포인트 추가
Qwen 프로바이더에 기존 Coding Plan 엔드포인트와 함께 중국 및 글로벌 API 키용 DashScope 표준(종량제) 엔드포인트가 추가되었습니다. 프로바이더 그룹은 Qwen (Alibaba Cloud Model Studio)으로 이름이 변경되었습니다.
왜 중요한가. 이전 Qwen 통합은 Coding Plan 키만 지원했는데, 이는 Alibaba Cloud가 제공하는 서비스의 일부에 불과합니다. 중국 내에서 DashScope API 키를 사용하거나 글로벌 키로 표준 과금을 이용하는 경우, 이제 우회 설정 없이 Qwen 모델을 바로 사용할 수 있습니다.
Control UI 정리
버튼 프리미티브가 통합되었습니다(btn--icon, btn--ghost, btn--xs). Knot 테마가 WCAG 2.1 AA 명암비를 충족하는 블랙 앤 레드 팔레트로 변경되었습니다. 설정 섹션 — Diagnostics, CLI, Secrets, ACP, MCP — 에 전용 아이콘이 추가되었습니다. 둥글기 슬라이더가 이산적인 단계로 교체되었습니다. 사용량 필터 전체에 aria-labels가 추가되어 접근성이 향상되었습니다.
이전 버튼 클래스나 Knot 테마 변수를 대상으로 하는 커스텀 CSS가 있다면 오버라이드를 확인하세요.
CSP 스크립트 해싱
제공되는 index.html의 인라인 <script> 블록에 SHA-256 해시가 계산되어 script-src CSP 디렉티브에 포함됩니다. 인라인 스크립트는 기본적으로 차단된 상태이며, 명시적으로 해시된 부트스트랩 코드만 허용됩니다. Control UI에 커스텀 인라인 스크립트를 주입하고 있었다면, 해시를 추가하지 않는 한 차단됩니다.
Auth 인증 시스템 대수술
Auth 및 인증 시스템에서 8건의 수정. 3.22 이후 가장 심하게 깨진 영역이었고, 수정 과정 자체가 하나의 교훈입니다 — 가동 중인 시스템 아래에서 인프라를 재구축하면 어떤 일이 벌어지는지.
핵심 수정: 게이트웨이의 auth-profile 실시간 쓰기가 방금 저장한 인증 정보를 메모리 내 오래된 값으로 되돌리고 있었습니다. 새 OpenAI 토큰을 붙여넣고 저장해도 만료된 토큰으로 돌아가는 현상. Configure, Onboard, 토큰 붙여넣기 플로우 전부 같은 근본 원인이었습니다. 수정 완료.
Operator scope 보존: 디바이스 auth 바이패스 경로가 operator scope를 암묵적으로 제거하여 operator 세션이 실패하거나 read 권한이 필요한 페이지가 빈 화면으로 표시되는 문제. 이제 캐시된 부족한 scope의 토큰은 무시되고, 실제로 read scope가 없을 때 명확한 폴백 메시지가 표시됩니다.
CLI 채널 인증: 단일 채널 설정에서 유일하게 사용 가능한 로그인 채널이 자동 선택됩니다. Channel ID는 프로토타입 체인 및 제어 문자 남용에 대해 강화되었습니다. 온디맨드 채널 설치가 catalog 기반 설치로 정상적으로 폴백됩니다.
ClawHub macOS 인증 (관련 수정 3건): ClawHub 로그인 토큰이 macOS Application Support 경로에서 읽히며, XDG config 경로도 폴백으로 지원됩니다. 게이트웨이의 skill 브라우징이 로그인된 auth 상태를 사용하며, 미인증 모드로의 암묵적 폴백이 제거되었습니다. browse-all 요청이 search로 전환되어 미인증 429 레이트 리밋 도달을 방지합니다.
OAuth 프록시 지원: 환경 설정된 HTTP/HTTPS 프록시 디스패처가 토큰 교환 및 프리플라이트 요청 전에 초기화되어, 프록시가 필요한 환경에서도 MiniMax 및 OpenAI Codex 로그인 플로우를 완료할 수 있습니다. 이전에는 프록시 환경에서 Codex OAuth 토큰 만료 시 사용자가 잠기는 문제가 있었습니다.
슬래시 커맨드 인가: 채널 allowFrom 해석이 미해결 SecretRef 기반 계정에 도달하더라도 인가가 크래시되거나 유효한 allowlist를 제거하지 않습니다. 영향을 받는 모델 추론 경로만 fail closed 됩니다.
브라우저 안정성: 핸드셰이크를 서두르지 마세요
2건의 수정, 하나의 테마: 브라우저가 정말로 준비되기 전에 상태를 판정하지 말 것.
macOS Chrome 연결: MCP를 통해 기존 Chrome 세션에 어태치할 때, 초기 핸드셰이크 시점에서 "준비 완료"로 판정되었지만 실제로 브라우저 탭은 아직 사용 가능한 상태가 아니었습니다. macOS에서 사용자 프로필 타임아웃과 반복적인 동의 팝업이 발생했습니다. 수정 후에는 어태치 이후 탭이 완전히 사용 가능해질 때까지 대기합니다.
헤드리스 Linux CDP: 느린 헤드리스 Linux 환경에서 CDP 감지 중 짧은 도달성 실패가 즉시 브라우저 전체 재시작을 트리거했습니다. 2차 브라우저 시작/열기에서 리그레션이 발생했습니다. 수정 후에는 짧은 도달성 미스 이후 재시작 감지로 폴백하는 대신 이미 실행 중인 루프백 브라우저를 재사용합니다.
두 버그의 공통 패턴: 시스템이 상태 전환을 너무 성급하게 판단했습니다. 짧은 응답 지연이 실패로 간주되어 비용이 높은 복구 경로가 트리거되고, 상황이 더 악화되었습니다.
플러그인 생태계: ClawHub 마이그레이션 후속 정리
3.22에서 플러그인 생태계가 ClawHub로 마이그레이션되었습니다. 3.23은 그 마무리 작업입니다.
- •번들 런타임 sidecar 복원: WhatsApp
light-runtime-api.js, Matrixruntime-api.js등 플러그인 런타임 엔트리 파일이 npm 패키지에서 누락되어 있었습니다. 글로벌 설치에서 번들 플러그인 런타임 누락 오류가 발생했습니다. 수정 완료. - •ClawHub 설치 호환성: 플러그인 API 호환성이 설치 시 활성 런타임 버전에 대해 해석됩니다.
>=2026.3.22ClawHub 패키지 설치를 차단하던 낡은1.2.0상수가 리그레션 커버리지로 교체되었습니다. - •언인스톨이 ClawHub 형식 지원:
openclaw plugins uninstall clawhub:<package>가 기록된 설치가 버전 고정되어 있어도 정상 작동합니다. - •LanceDB 첫 사용 시 자동 부트스트랩:
memory-lancedb플러그인이 번들 npm install에 LanceDB가 없을 때 자동으로 부트스트랩합니다. - •오래된 설정이 치명적이지 않음: 알 수 없는
plugins.allowID가 치명적 오류 대신 경고로 처리되어 플러그인이 로컬에 없어도plugins install,doctor --fix,status를 실행할 수 있습니다. - •Doctor 정리:
openclaw doctor --fix가 플러그인 제거 후 남은plugins.allow및plugins.entries참조를 삭제하고,whatsapp같은 내장 채널 ID를plugins.allow에 추가하지 않습니다. - •Matrix 및 LINE 런타임 수정: Jiti에서 runtime-api 중복 export가 Matrix 번들 설치 시작 시 크래시를 유발하지 않습니다. LINE이 star export 전에 겹치는 런타임 심볼을 사전 export하여
TypeError: Cannot redefine property를 방지합니다.
Agent 신뢰성
Agent 동작을 더 예측 가능하게 만드는 6건의 수정:
- •web_search 프로바이더: Agent 턴이 오래된 기본 선택 대신 활성 런타임의
web_search프로바이더를 사용합니다. 특정 검색 프로바이더를 설정했다면 이제 실제로 사용됩니다. - •Failover 분류: generic
api_error가 일시적 장애 신호를 포함할 때만 재시도 가능으로 처리됩니다. MiniMax 스타일 백엔드 장애는 모델 폴백을 트리거하지만, 과금/인증/포맷 오류는 더 이상 트리거하지 않습니다. - •서브에이전트 타임아웃 정확도: 타임아웃된 worker 대기가 완료 이벤트 전송 전에 최신 런타임 스냅샷에 대해 재확인되어, 빠르게 완료된 worker가 거짓으로 타임아웃 보고되지 않습니다.
- •Anthropic thinking 블록: 트랜스크립트 이미지 새니타이즈 중 assistant thinking 및
redacted-thinking블록 순서가 보존되어 후속 턴이 Anthropic의 unmodified-thinking 검증에 걸리지 않습니다. - •Replay 복구: 잘못된 assistant 트랜스크립트 콘텐츠가 세션 히스토리 새니타이즈 전에 정규화되어 레거시 또는 손상된 턴이 Pi replay 및 서브에이전트 복구 경로를 크래시시키지 않습니다.
- •Skill 설정 주입: 임베디드 skill 설정과 환경 변수가 활성 해석된 런타임 스냅샷을 사용하여
skills.entries.<skill>.apiKeySecretRef가 임베디드 시작 시 올바르게 해석됩니다.
게이트웨이 강화
게이트웨이 신뢰성을 높이는 4건의 수정:
- •프로브 정확도: 성공한 게이트웨이 핸드셰이크가 접속 후 상세 RPC 로딩 중에 "도달 불가"로 타임아웃되지 않습니다. 느린 디바이스는 거짓 음성의 죽은 게이트웨이가 아닌 도달 가능하지만 RPC 실패로 보고됩니다.
- •Supervision 안정성:
launchd와systemd에서의 락 충돌이 크래시 루프를 유발하지 않습니다. 중복 프로세스가 정상 게이트웨이가 락을 보유하는 동안 에러 종료 대신 재시도 대기 상태를 유지합니다. - •Auth 강제: canvas 라우트에 인증이 필요합니다. Agent session reset에 admin scope가 필요합니다. 익명 canvas 접근과 비admin reset 요청은 fail closed 됩니다.
- •OpenRouter 가격 책정:
openrouter/auto가격 갱신이 부트스트랩 중 무한 재귀하지 않아 auto 라우트가 캐시된 가격과usage.cost를 다시 채울 수 있습니다.
채널 수정
Telegram 3건 수정: 메인 스레드 메타데이터 누락 시 DM 토픽의 스레드 컨텍스트가 올바르게 채워집니다. 같은 채팅의 인바운드 메시지 디바운스 순서가 보존되어 오래된 비지 세션 후속 메시지가 정체되지 않습니다. 이미지 및 GIF 전송에 asDocument가 forceDocument의 사용자 측 별칭으로 추가되었습니다.
Discord: 권한 부족 시 네이티브 슬래시 커맨드가 Discord의 오해를 유발하는 일반 완료 메시지 대신 명시적인 미인가 응답을 반환합니다.
Plivo 음성: replay 키가 안정화되어 webhook 재시도와 replay 보호가 유효한 후속 전달에서 충돌하지 않습니다.
외부 채널 카탈로그가 출하된 폴백 메타데이터를 오버라이드하고 채널 설정 중 오버라이드된 npm 스펙을 준수할 수 있게 되었습니다.
기타 수정
- •Mistral: 번들 max-token 기본값이 안전한 출력 버짓으로 하향 조정.
openclaw doctor --fix가 context-sized output limit을 가진 오래된 영구 설정을 수리하여 확정적 422 거부를 방지합니다. - •CLI cron:
openclaw cron add|edit --at ... --tz <iana>가 오프셋 없는 일회성 날짜/시간에 대해 요청된 로컬 시각을 올바르게 준수합니다(DST 경계 포함). - •설정 경고: 같은 베이스의 수정 릴리스(예:
2026.3.23-2)가 작성한 설정을2026.3.23이 읽을 때 혼란스러운 "더 새로운 OpenClaw" 경고가 표시되지 않습니다. - •Exec trust: shell-multiplexer 래퍼 바이너리가 정책 검사에서 보존되어 승인된 명령어 재구성을 깨뜨리지 않습니다.
- •보안/exec 승인: shell-wrapper allowlist 매칭이 작은따옴표로 감싼
$0/$n토큰을 거부하고 개행 구분 exec를 금지하되exec -- carrier형식은 허용합니다. - •캐시 진단: cache-trace JSONL 출력에서 인증 정보 필드가 제거되며 비민감 진단 필드와 이미지 리댁션 메타데이터는 보존됩니다.
- •Feishu 문서: 채널 설정 예시의
botName이 엄격한 account 스키마에 맞춰name으로 변경되었습니다. - •릴리스 패키징: 번들 플러그인과 Control UI 에셋이 게시된 npm 설치에 유지되며, 출하 아티팩트 누락 시 릴리스 검사가 실패합니다.
기여자
16명의 기여자가 3.23에 수정을 랜딩했습니다. 특히 @vincentkoc — 브라우저, 게이트웨이, Agent, 플러그인, 보안, 릴리스 인프라에 걸친 14건의 수정. 대규모 릴리스 이후 프로젝트를 안정시키는 바로 그런 종류의 기여입니다.
@BunsDev(4건), @scoootscooob, @openperf, @futhgar, @07akioni, @Drickon, @osolmaz, @bakhtiersizhaev, @Lukavyi, @ayushozha, @RolfHegr, @drobison00, @haroldfabla2-hue, @jzakirov, @sallyom에게 감사드립니다.
업그레이드 안내
- •Qwen 사용자: 프로바이더 설정을 확인하세요. 표준 DashScope 키용 우회 설정을 사용하고 있었다면 네이티브 엔드포인트로 전환할 수 있습니다.
- •Mistral 사용자:
openclaw doctor --fix를 실행하여 context-sized output limit이 있는 오래된 설정을 수리하세요. - •커스텀 CSS 사용자: Knot 테마 팔레트와 버튼 클래스 이름이 변경되었습니다. 오버라이드를 확인하세요.
- •Control UI 스크립트 주입 사용자: 인라인 스크립트에 CSP SHA-256 해시가 필요합니다.
---
3.22는 가슴을 열고 엔진을 교체했습니다. 3.23은 모든 봉합이 유지되는지 확인했습니다.
40건 이상의 수정, 8건의 auth 패치, 2건의 브라우저 리그레션 해결, ClawHub 마이그레이션 후 드디어 깔끔하게 작동하는 플러그인 생태계. 화려한 작업은 아닙니다. 하지만 3.22의 아키텍처적 야심을 버그 리포트 없이 프로덕션에서 실제로 운영할 수 있는 것으로 만든 건 바로 이 릴리스입니다.
랍스터는 순조롭게 회복 중입니다. 봉합이 잘 유지되고 있습니다.