본문 바로가기
개발

Docker에서 Claude Code, Codex 승인 계속 물어볼 때 해결 방법

by 요즘IT 2026. 6. 9.

Claude Code나 Codex CLI 써본 분들은 아마 이 경험 한 번쯤 했을 거예요.

파일 하나 수정하려고 해도.

"진행할까요?"
"권한 허용하시겠습니까?"
"계속 실행할까요?"

계속 물어봅니다.

처음엔 안전해서 좋은데요.

한 30분 지나면 슬슬 버튼 누르는 기계가 돼요.

특히 Docker 안에서 AI 에이전트 돌릴 때 더 그렇습니다.

로그 확인하고.
파일 수정하고.
테스트 돌리고.
다시 수정하고.

이걸 반복하는데 매번 yes 누르고 있으면 흐름이 끊겨요.

저도 처음엔 그냥 썼거든요.

근데 어느 순간 보니까.

AI보다 제가 더 바쁘더라고요.

왜 자꾸 권한을 물어볼까?

이건 AI 코딩 도구들이 실제 파일 수정 권한을 갖고 있기 때문입니다.

일반 챗봇은 말만 합니다.

근데 Claude Code나 Codex는:

  • 파일 수정
  • 명령 실행
  • 패키지 설치
  • git 변경

같은 실제 작업을 합니다.

한마디로 진짜 작업자에 가까워요.

그러니까 매번:

"진짜 실행해도 돼?"

이걸 확인하는 거죠.

근데 여기서 반전이 있습니다.

이 확인창이 없으면.

실수 한 번에 운영 서버 날릴 수도 있어요.

실제로 rm 잘못 치거나.
.env 수정하거나.
DB 설정 건드리는 순간 사고 납니다.

그래서 기본값은 꽤 보수적입니다.

Claude Code 자동 승인 모드

Claude Code는 아래 옵션을 많이 씁니다.

claude --dangerously-skip-permissions

이름부터 좀 무섭죠?

dangerously.

진짜 위험하다는 뜻입니다.

근데 Docker 컨테이너처럼 격리된 환경이라면 꽤 편해집니다.

매번 yes 누를 필요 없이 계속 작업을 진행합니다.

솔직히 한 번 익숙해지면 다시 못 돌아갑니다.

근데 저는 바로 막혔습니다

처음에는 저도 이렇게 실행했습니다.

claude --dangerously-skip-permissions

근데 바로 에러가 나더라고요.

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

어? 이상하죠?

Docker 안인데도 안 됩니다.

확인해보니 컨테이너 안에서 root 사용자로 실행 중이었습니다.

root@607ce6cf2895:/workspace/book#

Claude Code는 최근 버전부터 root 환경에서 자동 승인 모드를 막고 있습니다.

생각해보면 이유는 이해가 됩니다.

root + 자동 승인 조합은 사실상:

"AI에게 관리자 권한 무제한 제공"

이거랑 거의 비슷하거든요.

결국 일반 사용자를 만드는 게 맞다

그래서 제대로 사용하려면 보통 일반 사용자를 만듭니다.

예를 들면:

adduser claude

그리고 작업 디렉토리 권한을 넘겨줍니다.

chown -R claude:claude /workspace/book

그 후:

su - claude

로 접속해서 Claude Code를 실행합니다.

이 방식이 가장 안전하고 깔끔합니다.

근데 저는 아직 안 바꿨습니다

솔직히 말하면.

기존 프로젝트를 전부 root로 만들어놨거든요.

git 권한도 있고.

SSH 키도 있고.

파일 소유권도 다 root입니다.

그래서 당장은 일반 사용자로 전환하지 않았습니다.

일단은 기존 방식으로 사용 중이고.

시간 날 때 AI 작업 전용 컨테이너를 따로 만들 생각입니다.

이 부분도 생각보다 중요합니다.

괜히 한 번에 다 바꾸려다가:

  • git 권한 꼬이고
  • ssh 인증 안 되고
  • docker volume 권한 깨지고
  • vscode 접근 안 되고

오히려 더 큰 삽질이 시작될 수 있거든요.

Codex CLI 자동 실행 모드

Codex는 최근 방식이 조금 다릅니다.

처음에는 저도 이렇게 실행했습니다.

codex exec --sandbox workspace-write

근데 에러가 나더라고요.

No prompt provided.

처음엔 root 문제인 줄 알았습니다.

근데 그게 아니었어요.

Codex는 실행할 작업을 같이 넘겨줘야 합니다.

예를 들면:

codex exec --sandbox workspace-write "현재 프로젝트 구조 분석해줘"

또는:

codex exec --sandbox workspace-write "Next.js 빌드 오류 수정해줘"

이렇게 사용합니다.

여기서 sandbox는 작업 공간 제한 개념입니다.

쉽게 말하면:

"이 폴더 안에서만 움직여"

이걸 지정하는 거예요.

운영 서버 전체 권한을 주는 것보다 훨씬 안전합니다.

AI coding agent Docker workflow
AI coding agent Docker workflow

Claude와 Codex는 사용 방식이 조금 다르다

재밌는 점이 하나 있습니다.

Claude는 보통 대화형으로 많이 사용합니다.

claude

이렇게 실행하면:

사용자 ↔ Claude ↔ 사용자 ↔ Claude

계속 대화하면서 진행합니다.

반면 Codex는:

codex exec "작업 내용"

형태로 많이 씁니다.

거의 AI 작업자 느낌입니다.

파일 읽고.
수정하고.
테스트하고.
결과까지 정리합니다.

그래서 저는 보통:

  • 방향 논의 → Claude
  • 반복 작업 → Codex

이 조합을 자주 사용합니다.

생각보다 궁합이 괜찮습니다.

그래서 저는 Docker로 작업 공간을 따로 분리했습니다

예를 들면 이런 식입니다.

/opt/ai-workspace
/opt/app

/opt/ai-workspace 는 AI 작업 공간입니다.

Claude Code나 Codex가 여기서는 마음껏 수정하고 테스트해도 됩니다.

반대로 /opt/app 은 실제 운영 영역입니다.

AI는 workspace만 접근하게 했습니다.

이게 생각보다 중요합니다.

자동화는 빠른데.
실수도 빠르거든요.

alias 설정해두면 꽤 편하다

매번 긴 옵션 치기 귀찮잖아요.

그래서 보통 alias를 등록합니다.

alias claude-yolo='claude'
alias codex-auto='codex exec --skip-git-repo-check --sandbox workspace-write'

그리고 Codex는 이렇게 사용합니다.

codex-auto "현재 프로젝트 구조 분석해줘"

또는:

codex-auto "Docker compose 오류 수정해줘"

이렇게요.

반복 작업할 때 꽤 편합니다.

codex-auto='codex exec --skip-git-repo-check --sandbox workspace-write'
codex-auto='codex exec --skip-git-repo-check --sandbox workspace-write'

결국 핵심은 이거예요

Claude Code나 Codex가 승인 계속 물어보는 건.

귀찮게 하려고 만든 게 아닙니다.

실제로 서버를 건드릴 수 있기 때문이에요.

근데 Docker처럼 격리된 환경이라면.

자동 승인 모드를 활용하는 순간 생산성이 꽤 올라갑니다.

다만 여기서 핵심은 하나입니다.

"AI에게 어디까지 권한을 줄 건가?"

이걸 먼저 정해야 합니다.

자동화를 할수록.

권한 분리가 더 중요해집니다.