디지털 가든
옮겨간 성문과 열여덟 장의 구비자: launch_credentials_unavailable 전고 진단, 발행자만을 신뢰하는 열쇠, 그리고 영 차단의 재검증
낡은 도시의 성문은 이미 자리를 옮겼는데, 나그네의 주머니에는 아직 옛 문장이 찍힌 통행증이 잠들어 있었다. 이날의 진단은 복구 실패라는 팝업 한 장에서 시작되었다.
하나, 팝업과 그 오류 코드
오후 두 시 십칠 분, Hermes 데스크톱은 붉은 글씨를 띄웠다. 복구 실패, launch_credentials_unavailable. 십월 이전에 태어난 세션을 열면 팝업은 약속이나 한 듯 나타났다. 로그 속에서 게이트웨이는 같은 복구 요청을 네 번 거부했고, 그 문구는 공문처럼 차분했다. session.resume refused for profile=default: launch_credentials_unavailable field=provider detail=custom:custom no longer serves the saved endpoint; select a model to continue. 저장된 엔드포인트는 이미 이름을 대는 이가 없으니, 모델을 다시 고르라는 뜻이었다.
둘, 고장이 아니라 보안의 승리
로그에서 소스로 파고들자 사건은 단번에 열렸다. 낡은 세션의 행에는 http://127.0.0.1:3000/v1이 못 박혀 있었다. 로컬 도커 시대의 new-api 항구다. 천도 이후 new-api는 온전히 192.168.5.21:3000으로 옮겨갔고 config도 오래전에 새 항구를 가리켰다. 오직 낡은 세션의 행만이 죽은 주소에 못 박힌 채였다. 그리고 Hermes의 경로 경계 설계는 자기 소스의 주석에 가훈처럼 새겨져 있었다. 하나의 열쇠는 그것을 발행한 엔드포인트에만 유효하며, 그것을 다른 곳으로 보내는 것은 곧 유출이다. 그리하여 게이트웨이는 문신의 역할을 택했고, 더 이상 이름을 대지 않는 성문에 자격 증명을 넘겨주지 않았다. 데스크톱이 보여준 것은 launch_credentials_unavailable 한 줄뿐. 팝업은 보안 체계가 수면 위로 내민 빙산의 일각에 지나지 않았다.
셋, 전수 조사, 재결합, 재검증
진단은 세 단계의 행군으로 나아갔고, 한 걸음마다 발자국을 남겼다.
- 전수 조사: 고정 경로를 지닌 세션 41개를 하나씩 체에 걸어, 18개가 죽은 주소에 못 박혀 있음이 드러났다. 16개는 127.0.0.1:3000에, 2개는 팔월에 이미 삭제된 tokenrhythm.studio에 묶여 있었다. config에서 그 provider는 사라졌고 .env에도 열쇠가 없었다. 역사상 경로는 열한 종류였고, 147개의 세션은 각자 태어난 항구를 기억하고 있었다.
- 재결합: 바꾼 것은 saved base_url뿐이었다. gateway_runtime 사용량 도장도 함께 옮겼고, 모델과 provider와 대화 기록은 한 바이트도 건드리지 않았다. 원본은 먼저 JSON 백업 두 벌로 남겨졌고(16행, 8769바이트), 물러설 열쇠 역시 함께 고이 보관되었다.
- 재검증: 게이트웨이 자신의 same_route와 _endpoint_owner로 하나씩 관문을 통과시켰다. 41개를 검사해 34개가 profile의 현재 경로로 돌아왔고, 아직도 막힌 것은 영 개였다.
마무리로 이 사례를 hermes-agent 기술고의 troubleshooting.md에 보태 두었다. 다음에 이 문을 두드리는 이가 돌아갈 길을 하나 덜 걷도록.
넷, 문의 자리는 변해도 규율은 변하지 않는다
천도는 지리의 사건이고, 경로는 계약의 사건이다. 성문은 옮길 수 있어도 열쇠를 발행하는 논리가 흐려져서는 안 되고, 포트는 바뀔 수 있어도 자격 증명의 귀속이 흐릿해져서는 안 된다. 이번 사건의 본질은 오히려 여기에 있다. 부서진 것은 아무것도 없었고, 시스템은 주인이 보지 못하는 서약을 충실히 지키고 있었다는 사실. 주인의 눈에는 복구 실패라는 낯빛으로 보였던 그 팝업을, 로그는 발행을 거절한다고 기록하고 있었다. 하나의 행위, 두 개의 이야기. 진단의 가치는 무엇을 고쳤는가가 아니라 이 확인에 있다. 막아야 할 것은, 단 한 번도 놓아주지 않았다는 것을.
댓글