> ## Content Index
> Fetch the complete content index at: https://sanghunkang.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Orca에서 만든 Codex thread를 ChatGPT 앱에 표시하는 방법
- URL: https://sanghunkang.com/ko/orca-codex-threads-chatgpt-ko/
- Published: 2026-08-19T18:21:36.000Z
- Updated: 2026-10-24T17:02:26.000Z
- Author: Sanghun Kang
- Tags: dev, #ko, #multi, Codex, Orca

[Orca](https://github.com/stablyai/orca?ref=sanghunkang.com)라는 터미널 앱이 핫하길래 써봤다. 직접 써보니 worktree와 터미널을 함께 관리하기 편해 꽤 괜찮았다. 그런데 Orca에서 만든 Codex thread가 ChatGPT 앱에는 나타나지 않았다. 반대로 ChatGPT 앱에서 만든 thread는 Orca에서 실행하면 보였다. 모든 환경에서 동일한 설정을 추구하는 나로서는 치명적인 문제였다.

원인은 Orca가 자체적으로 별도의 `CODEX_HOME`을 사용하고 있었기 때문이다. 이 값을 ChatGPT 앱과 같은 경로로 맞추니 문제가 해결됐다.

해결 방법은 Orca가 실행하는 Codex 프로세스의 `CODEX_HOME`을 `~/.codex`로 지정하는 것이다.

```
env CODEX_HOME="$HOME/.codex" codex
```

단, 이걸 `.zshrc`에 넣으면 또 안 된다.

## 문제와 현황

Codex thread는 대략 두 종류의 데이터로 구성된다.

- `sessions/.../rollout-*.jsonl`: 실제 대화와 실행 이벤트
- `state_5.sqlite`: thread ID, 제목, 작업 디렉터리, 생성 시각, JSONL 경로 등을 담은 인덱스

ChatGPT 앱과 일반 Codex CLI는 기본적으로 다음 저장소를 사용한다.

```
~/.codex/
├── sessions/
└── state_5.sqlite
```

반면 당시 Orca는 자체 관리 디렉터리를 `CODEX_HOME`으로 강제했다.

```
~/Library/Application Support/orca/codex-runtime-home/home/
├── sessions/
└── state_5.sqlite
```

그 결과 저장 흐름이 둘로 갈라졌다.

```
ChatGPT 앱에서 시작한 thread
└── ~/.codex

Orca에서 시작한 thread
└── ~/Library/Application Support/orca/codex-runtime-home/home
```

ChatGPT 앱은 `~/.codex`를 읽기 때문에 Orca 전용 저장소에만 기록된 thread를 표시하지 못했다. 반면 Orca에는 `~/.codex`의 기존 세션을 가져오는 기능이 있어 ChatGPT 앱에서 만든 thread가 Orca 쪽에서는 보였다. 이 비대칭 때문에 한쪽 방향만 정상적으로 동작한 것이다.

## 원인

Orca 소스를 확인해 보니 Codex 실행 과정에서 다음 일이 일어났다.

1. Orca가 자체 runtime home을 준비한다.
2. Codex 프로세스를 실행할 때 `CODEX_HOME`을 해당 runtime home으로 설정한다.
3. 셸 시작 이후에도 Orca가 관리하는 값을 다시 적용한다.

따라서 `.zshrc`에 아래 설정을 넣는 것만으로는 해결되지 않는다.

```
export CODEX_HOME="$HOME/.codex"
```

셸이 이 값을 읽더라도 Orca가 Codex를 시작하면서 다시 덮어쓰기 때문이다.

또한 `sessions` 디렉터리만 심볼릭 링크로 연결하는 것도 완전한 해결책이 아니다. 대화 본문은 JSONL에 있지만 thread 목록과 메타데이터는 `state_5.sqlite`에도 기록된다. JSONL과 SQLite가 서로 다른 저장소를 바라보면 thread가 파일로 존재해도 앱 목록에는 나타나지 않을 수 있다.

핵심은 **Codex 프로세스가 시작되는 시점부터 ChatGPT 앱과 동일한 `CODEX_HOME`을 사용하게 하는 것**이다.

## 해결책

Orca에서 다음 설정으로 이동한다.

```
Settings > Agents > Codex > Command
```

기존 `codex` 명령을 다음 명령으로 교체한다.

```
env CODEX_HOME="$HOME/.codex" codex
```

이 명령을 `.zshrc`에 추가하는 것이 아니다. **Orca의 Codex Command 입력란에 설정하는 command override**다.

이제 Orca에서 새 Codex thread를 만들면 다음 두 위치에 기록된다.

```
~/.codex/sessions/
~/.codex/state_5.sqlite
```

ChatGPT 앱도 같은 저장소를 읽으므로 Orca에서 만든 새 thread가 앱 사이드바에 표시된다.

### 기존 Orca thread는 자동으로 옮겨지지 않는다

위 설정은 앞으로 생성되는 thread의 저장 위치를 바꾼다. 설정 전에 Orca에서 만든 thread는 기존 저장소에 그대로 남는다.

```
~/Library/Application Support/orca/codex-runtime-home/home/sessions/
~/Library/Application Support/orca/codex-runtime-home/home/state_5.sqlite
```

기존 thread까지 ChatGPT 앱에서 보이게 하려면 해당 JSONL을 `~/.codex/sessions/`로 복사하거나 하드링크하고, 해당 `threads` 레코드도 `~/.codex/state_5.sqlite`로 이전해야 한다. DB 전체를 덮어쓰면 기존 ChatGPT thread를 잃을 수 있으므로 먼저 백업하고 필요한 레코드만 옮기는 편이 안전하다.

---

## 삽질 로그

**.zshrc에서 CODEX\_HOME을 바꾸면 되지 않을까?**

처음에는 다음 설정을 고려했다.

```
export CODEX_HOME="$HOME/.codex"
```

하지만 Orca가 Codex 실행 시 `CODEX_HOME`을 자체 runtime home으로 다시 설정하고, 셸 시작 이후에도 관리 값을 재적용했다. 따라서 셸 설정만 수정하는 방식은 안정적인 해결책이 아니었다.

**Codex home to import from 설정은 무엇인가?**

이 설정은 Orca가 실행할 Codex의 홈을 바꾸는 옵션이 아니었다. `~/.codex/sessions`에 있는 기존 기록을 Orca 관리형 홈으로 가져오는 단방향 import 설정이었다.

이 때문에 ChatGPT 앱에서 만든 thread는 Orca에서 보이지만, Orca에서 만든 thread는 ChatGPT 앱에서 보이지 않는 비대칭이 발생했다.