사내 도구로 쓰는 브라우저 확장을 하나 만들고 있었습니다. 여러 계정을 등록해두고, 원하는 계정으로 바로 로그인시켜주는 기능이었죠. 로그인 화면에 아이디·비밀번호를 자동으로 채워넣는 방식 말고, 아예 로그인 API를 확장이 대신 호출해서 세션을 만든 다음, 그 세션을 사용자가 보고 있는 별도의 창(테스트용으로 열어둔 시크릿 창)에 옮겨 심어주는 방식으로 설계했습니다. 그래야 캡차나 추가 인증 같은 예외 상황만 사람이 개입하고, 나머지는 전부 자동으로 끝나니까요. 처음엔 간단해 보였습니다. "로그인 API를 호출하고, 응답으로 온 세션 값을 꺼내서 원하는 창에 넣으면 끝 아닌가?" 실제로 코드를 짜기 시작하면서 이 문장이 세 번 연속으로 틀렸다는 걸 알게 됐습니다. 첫 번째로 틀린 지점. 브라우저의 표..