logo hsb.horse
← 블로그 목록으로 돌아가기

블로그

Codex Cloud에서 mise 버전 고정이 안 될 때 대처법

Codex Cloud에서 mise install bun은 성공하는데 command not found가 나오는 원인과, setup.sh에서 mise use -g와 mise activate로 해결한 과정을 정리했다.

게시일: 수정일:

mise install bun은 통과했는데 buncommand not found로 나온다. Codex Cloud에서 mise를 쓰다가 이 현상에 빠졌다.

로컬에서는 .tool-versions로 버전을 고정해 두고 안심하고 있었다. Cloud에서는 그대로 적용되지 않는다.

증상

지정한 bun이나 node 버전이 Cloud에서 어긋난다. mise install bun이 성공했는데도 바로 뒤에 bun을 실행하면 찾을 수 없다. 캐시 복원 후 의존성이 틀어지는 경우도 있다.

하나라도 해당된다면, mise의 설치와 활성화를 혼동하고 있을 가능성이 높다.

원인

Codex Cloud는 .tool-versions.mise.toml을 자동으로 적용하지 않는다. 로컬과 같은 감각으로 방치하면 동작하지 않는다.

가장 빠지기 쉬운 함정은 mise install의 동작이다. mise install bun은 바이너리를 다운로드할 뿐, 셸 PATH에 추가하지 않는다. mise activatemise exec를 별도로 실행해야 한다. 이걸 모르면 몇 번을 다시 해도 command not found가 반복된다.

AGENTS.md에 bun을 사용하라고 적어 둬도 방침 보조에 불과하다. 환경 구축 자체는 다른 구조로 제어해야 한다.

setup.sh와 maintenance.sh로 해결하기

Codex Cloud의 Environment 설정을 Manual setup으로 전환하고 셋업 스크립트를 직접 작성한다.

.tool-versions

bun 1.3.8
nodejs 25.6.0

.codex/cloud/setup.sh

#!/usr/bin/env bash
set -euo pipefail
mise use -g bun@1.3.8
mise use -g node@25.6.0
eval "$(mise activate bash --shims)"
bun install --frozen-lockfile

mise use -g로 도구를 전역 등록한 뒤, mise activate bash --shims로 shims를 통해 PATH를 건다. 이 두 단계를 나누는 것이 핵심이다. mise install 하나로 끝내려 하면 실패한다.

.codex/cloud/maintenance.sh

#!/usr/bin/env bash
set -euo pipefail
bun install --frozen-lockfile

캐시 복원 후 실행되는 스크립트다. setup.sh에서 설정한 PATH가 유지되는 전제로 작성했다.

운용 절차

Codex Cloud의 Environment 설정에서 Manual setup을 활성화하고, setup script에 .codex/cloud/setup.sh, maintenance script에 .codex/cloud/maintenance.sh를 지정한다. Environment 캐시를 초기화하고 재생성하면 반영된다.

보조적으로 AGENTS.mdUse bun for install/run. Do not use npm unless explicitly requested.를 기재해 둔다.

주의할 점

mise install만으로는 bun을 실행할 수 없다. mise activatemise exec가 필요하다. 설치와 셸 활성화가 별개 단계라는 전제로 구성을 짜지 않으면 같은 곳에서 계속 막힌다.

setup script와 후속 처리는 별도 세션에서 동작한다. PATH에 의존하는 설정은 각 스크립트 내에서 완결시키는 편이 낫다. maintenance script에서 bun을 찾지 못하면 mise exec -- bun ...으로 우회할 수 있다.

정리

Codex Cloud에서 mise를 안정적으로 쓰려면, Manual setup에서 setup.sh와 maintenance.sh를 직접 준비하고 mise use -gmise activate를 조합해 PATH를 잡는다. mise install만으로 해결하려 하지 않는 것이 전부다.

Codex Cloud가 커스텀 Docker 이미지를 지원하게 되면, 이 우회책 자체가 불필요해질 수도 있다.