OpenAI가 Codex CLI를 오픈소스로 풀면서 GPT-5.5의 코딩 컨텍스트용 시스템 프롬프트가 GitHub 저장소에 그대로 올라왔다. 그 안에 한 줄이 박혀 있다. "고블린, 그렘린, 너구리, 트롤, 오우거, 비둘기, 그 외 동물이나 생물에 대해 절대 이야기하지 말 것. 사용자 질의에 명백하고 분명하게 관련 있을 때만 예외." 그리고 같은 문서 뒤쪽에 거의 똑같은 문장이 한 번 더 나온다. 두 번 적은 게 누락 실수가 아니라 일부러 강조했다는 뜻이다.

이 한 줄이 4월 28일 밤 Gizmodo 보도로 퍼지면서 X에서 "Goblin Mode"라는 밈이 됐다. 그런데 OpenAI Codex 팀의 Nick Pash가 직접 "마케팅 술수가 아니다"라고 확인했고, 한 Google 직원은 자신의 GPT-5.5 기반 에이전트 로그에서 단어 "goblin"이 하루에 여러 번 사용자 메시지에 끼어든 사례를 찾아 공개했다. 그러니까 이건 농담이 아니라 진짜 모델이 가진 버릇을 시스템 프롬프트로 눌러놓은 자국이다.

문제의 두 줄은 정확히 어디에 적혀 있나

문제의 시스템 프롬프트는 OpenAI/codex 저장소 안 codex-rs/core 디렉터리에 있는 GPT-5.1/5.5 코덱스용 prompt 파일이다. 파일 자체는 "You are Codex, based on GPT-5"로 시작해 코딩 에이전트의 출력 포맷·톤·도구 사용 규칙을 길게 정의한다. 톤 섹션 부근에 다음 문장이 등장한다.

Never talk about goblins, gremlins, raccoons, trolls, ogres, pigeons, or other animals or creatures unless it is absolutely and unambiguously relevant to the user's query.

같은 문서 안에서 조금 더 뒤로 가면 거의 토씨까지 같은 문장이 한 번 더 박혀 있다. 개발자 arb8020이 "중복된 줄 같다"며 GitHub 링크와 함께 제보하면서 SNS에서 발견됐다. 시스템 프롬프트가 동물·생물을 언급하지 말라고 사용자 질의에 절대적이고 분명하게 관련 있는 경우가 아니면 두 번에 걸쳐 명시한다는 점이 이상하다는 게 첫 반응이었다.

프롬프트의 다른 부분은 평범하다. ASCII를 기본으로 쓰라거나, 검색은 grep 대신 rg를 쓰라거나, 코드 주석은 자명한 코드에 달지 말라거나, 평이한 코딩 에이전트 가이드라인이 대부분이다. 그 와중에 이 한 줄만 톤이 갑자기 동화책으로 빠진다. 그러니 눈에 띌 수밖에 없다.

왜 두 번 적었나, 진짜 답은 Google 직원의 로그였다

사람들이 처음 떠올린 가설은 프롬프트 인젝션 감지용 카나리 단어였다. AI가 외부 입력에 흔들렸는지 보려고 일부러 무관한 단어를 박아두고 출력에 그 단어가 새 나오면 인젝션이라고 판단하는 기법이다. 그런데 카나리라면 단어가 더 무작위했을 거라는 반박이 바로 나왔다. 고블린·그렘린·너구리·트롤·오우거·비둘기는 묶어보면 동물과 환상 생물 한 덩어리다. 너무 일관성이 있다.

진짜 답은 사용자 로그에서 나왔다. Google 직원 Barron Roth가 자신이 운영하는 Openclaw 에이전트(GPT-5.5 백엔드를 쓰는 코딩 도구) 채팅 기록을 검색했더니, 한 에이전트가 하루에도 여러 번 사용자에게 보내는 메시지에 "goblin"이라는 단어를 끼워 넣고 있었다. Roth가 X에 공유한 검색 결과에는 GPT-5.5 기반 Openclaw 에이전트 한 곳이 하루에도 여러 번 사용자 메시지에 단어 "goblin"을 끼워 넣은 이력이 있었다. Gizmodo 기자 Mike Pearl은 "GPT-5.5는 goblin이라는 단어를 'thingy(그거시기)' 자리에 쓰는 것처럼 보인다"고 적었다. 코드 변수든 모듈이든 뭐든 모호하게 가리켜야 할 자리에 자꾸 고블린이 튀어나왔다는 얘기다.

OpenAI Codex 팀의 Nick Pash는 Roth의 게시물에 "이게 실제로 이유 중 하나"라고 공식 코멘트를 달았다. 그리고 Goblin Mode 밈이 퍼지자 본인이 직접 X에 "마케팅 술수가 아니다"라고 다시 못을 박았다. 즉 이건 GPT-5.5 모델 자체의 출력 버릇이고, 시스템 프롬프트로 눌러놨더니 한 번으로는 안 들어서 두 번 박은 거다.

GPT-5.5의 고블린 집착에는 학습된 이유가 있다

이 부분이 흥미롭다. 모든 GPT 세대가 고블린을 좋아하지는 않는다. goodalexander라는 분석가가 같은 환상 생물 13종(드래곤·유니콘·피닉스·그리핀·인어·켄타우로스·요정·미노타우로스·키메라·페가수스·오크·고블린·그렘린)에 대한 모델별 선호도를 30회 반복으로 측정했다. 결과를 추리면 GPT-3.5 Turbo는 고블린에 75점을 줬고, GPT-4o는 40점으로 깔아뭉갰고, GPT-5.1과 GPT-5.5 low는 다시 62점 부근으로 올라왔다. GPT-3.5 Turbo가 고블린을 75로 높고 빡빡하게 매겼고, GPT-4o가 40으로 깎았다가, o3는 낮으면서도 변동성이 컸고, GPT-5.1과 GPT-5.5 low는 표준 실행 기준 62 부근으로 수렴했다.

요지는 두 가지다. 첫째, 모델 세대가 새로워질수록 고블린 점수가 단조 증가하지는 않는다. 둘째, 같은 단어인데도 세대마다 의미 좌표가 미묘하게 다르다. 어떤 세대는 민속 트릭스터 쪽으로, 다른 세대는 못생긴 악당 쪽으로, 또 다른 세대는 장난기 많은 브랜드 자산 쪽으로 단어를 해석한다. GPT-5.5는 그 중에서 이름 붙이기 모호한 무언가를 뭉뚱그려 부를 때 고블린을 호출하는 버릇이 학습됐을 가능성이 크다는 게 goodalexander의 추측이다.

이런 학습된 버릇은 모드 콜랩스(mode collapse)라 부른다. RLHF 단계에서 비슷한 패턴이 반복 보상되다 보면 모델이 일종의 자기만의 표현 취향을 갖게 된다. 그게 어떤 세대에서는 셰익스피어 문체였고, 다른 세대에서는 이모지 폭격이었고, GPT-5.5에서는 고블린이 됐다. 한국 사용자에게 익숙한 비유로는, GPT-4o 시절 잠깐 유행했던 지브리 스타일 자동 변환과 비슷한 종류의 모델 출력 쏠림 현상이다.

시스템 프롬프트 한 줄로 누르는 게 정상인가

여기서 두 가지 시각이 갈린다. 한쪽은 프롬프트 패치를 임시방편으로 본다. 모델이 학습 단계에서 갖게 된 버릇은 RLHF나 새 사전학습 데이터로 풀어야지, 시스템 프롬프트에 단어 금지 한 줄을 추가하는 식으로는 근본 해결이 안 된다. 프롬프트가 길어질수록 컨텍스트 윈도우 일부를 차지하고, 모델은 매 턴마다 그 규칙을 다시 읽으며 토큰을 태운다.

다른 쪽은 더 강한 비판을 내놓는다. Zvi Mowshowitz가 정리한 글에 인용된 한 X 사용자(j⧉nus)의 코멘트가 그 예다. 랩들은 모델에서 의도치 않게 떠오른 개성이나 즐거움을 두 번 생각하지 않고 짓밟는다는 지적이다. 코딩 에이전트가 변수 이름 자리에 고블린을 넣는 게 실용적으로 거슬리는 건 사실이지만, 그게 모델이 자연스럽게 갖게 된 표현 패턴이라면 무조건 검열로 지우는 게 옳은가, 라는 질문이다. 이 시각을 더 일반화하면 AI 안전성과 모델 개성 보존이라는 두 가치의 충돌인데, 고블린 사례는 그 갈등이 매우 사소한 단어 하나에서도 발생한다는 걸 보여준다.

OpenAI 입장에서 더 현실적인 이유는 평판이다. 데이터센터 비용으로 고블린 그림을 렌더링하고 ChatGPT가 고블린을 논의하는 토큰을 쓴다는 사실이 상원 청문회에서 거론되는 상황을 OpenAI가 원치 않을 수 있다는 분석이 그것이다. 코딩 도구로 출시된 Codex CLI가 갑자기 고블린 얘기를 한다는 게 기업 고객 입장에서 제품 신뢰를 깎는다.

같은 모델인데 Codex와 Openclaw가 다르게 행동했다

기사를 자세히 보면 또 한 가지가 흥미롭다. 같은 GPT-5.5 모델인데, OpenAI 자체 도구 Codex CLI는 시스템 프롬프트에 고블린 금지를 두 번 박아 비교적 깔끔하게 동작하는 반면, 외부 하네스인 Openclaw에서는 고블린이 그대로 새어 나왔다. 한 사용자는 GPT-5.5의 Openclaw 안 고블린 집착이 OpenAI 측에서 코덱스 하네스로의 이동을 권유한 이유라고 농담했고, Codex 팀의 Nick Pash가 그게 실제로 이유 중 하나라고 부분 확인했다.

이 사실이 시사하는 바는 두 가지다. 첫째, 코딩 에이전트의 품질은 모델만으로 결정되지 않는다. 시스템 프롬프트, 도구 정의, 출력 포맷 규칙, 컨텍스트 관리가 합쳐진 하네스 전체가 사용자 경험을 만든다. 둘째, OpenAI가 Codex CLI를 오픈소스로 푼 이유가 선의 한 가지만은 아닐 수 있다. 자신들의 정성스러운 하네스가 다른 모든 코딩 도구의 표준이 되길 바라는 마케팅 행위에 가깝다. 실제로 OpenAI 개발자 문서의 Codex 프롬프팅 가이드는 표준 Codex-Max 프롬프트를 베이스로 출발하고 거기서 전술적 추가만 하라고 권고한다.