본문으로 건너뛰기

ChatGPT Agent가 로컬 파일을 못 보는 이유: Claude Code와 Codex 권한 차이

A
13 분 소요AI 개발 도구

파일을 보여주기 전에 어느 표면이 경로를 소유하는지 결정해야 한다. ChatGPT는 업로드와 연결, Codex와 Claude Code local은 선택한 작업 영역에서 시작한다.

ChatGPT Agent가 로컬 파일을 못 보는 이유: Claude Code와 Codex 권한 차이

ChatGPT Agent가 로컬 파일을 보지 못하는 이유는 agent 능력의 문제가 아니라 실행 위치의 문제다. ChatGPT가 볼 수 있는 것은 대화에 업로드한 파일, Library에 둔 파일, 연결된 앱이나 데이터 소스, 또는 명시적으로 승인한 GitHub 저장소다. 내 컴퓨터의 임의 폴더가 자동으로 붙는 구조가 아니다.

Codex local과 Claude Code local은 다르다. 이들은 선택한 프로젝트, 현재 작업 디렉터리, 로컬 세션에서 시작하므로 저장소 파일을 읽고 수정하고 테스트를 실행할 수 있다. 하지만 여기에도 sandbox, approval policy, workspace write, Bash allow/ask/deny, bypass 같은 권한 경계가 있다.

2026년 5월 23일 기준으로 먼저 물어야 할 질문은 어느 agent가 더 똑똑한가가 아니다. 어느 표면이 파일 경로를 소유하는가, 파일이 어떤 경로로 전달되었는가, 읽기 이후 쓰기·명령 실행·네트워크·GUI 조작까지 허용할 것인가다.

| 파일 상태 | 맞는 경로 | 첫 행동 | 피할 행동 | | 문서나 CSV 하나 | ChatGPT upload / Library | 필요한 파일만 업로드 | 폴더 전체 업로드 | | 로컬 repo와 테스트 | Codex local / Claude Code local | workspace 안에서 diff와 명령 확인 | ChatGPT가 unpushed diff를 본다고 가정 | | push된 GitHub branch | GitHub / cloud clone | repo와 branch를 명시 | 로컬 상태와 cloud 상태 혼동 | | secrets와 .env | redacted fixture / isolated workspace | deny와 최소 샘플 먼저 | 원본 secret을 chat에 전달 |

빠른 답: agent에는 파일로 들어가는 경로가 필요하다

ChatGPT Agent는 ChatGPT 제품 표면이다. 그 안의 terminal이나 browser는 현재 로컬 프로젝트 폴더에서 열린 shell이 아니다. 파일은 upload, Library, connector, data source, GitHub authorization 같은 경로를 통해 전달되어야 작업 대상이 된다.

보고서 하나를 읽는다면 업로드가 가장 단순하다. 저장소를 수정하고 테스트하고 uncommitted diff를 확인해야 한다면 Codex local이나 Claude Code local이 맞다. 같은 질문이라도 파일 상태가 다르면 도구 선택이 달라진다.

권한은 크게 주는 것이 아니라 맞게 주는 것이다. 실행 위치를 정하고, 파일 경로를 정하고, 읽기·쓰기·명령·네트워크·GUI 권한을 각각 분리한다. 이 순서를 지키면 필요한 파일 하나 때문에 불필요한 private data를 넘기는 일을 줄일 수 있다.

| 상태 | 추천 경로 | 이유 | | 단일 문서 | ChatGPT upload | 복사본만으로 충분 | | 테스트 있는 repo | local coding agent | 실행 환경이 필요 | | uncommitted diff | local agent | cloud는 자동으로 모름 | | push된 repo | GitHub/cloud | 명시적으로 승인 가능 | | secrets | fixture/isolation | 노출 범위부터 줄임 |

ChatGPT Agent 경계: 업로드, 연결, 승인

ChatGPT Agent의 도구는 제품 환경 안에 있다. terminal처럼 보이는 기능이 있어도 내 로컬 zsh, node_modules, .venv, git diff가 있는 checkout은 아니다. 그래서 로컬 경로를 입력한다고 해서 그 파일을 읽을 수 있는 것은 아니다.

작업을 파일 경로로 표현해야 한다. 계약서는 계약서만 업로드한다. 반복해서 쓸 자료는 Library에 둔다. cloud data는 connector로 연결한다. 코드가 GitHub에 있어야 한다면 특정 repository와 branch를 승인한다.

가장 중요한 원칙은 최소화다. 현재 답에 필요 없는 .env, 고객 export, 내부 문서, 개인 폴더는 전달하지 않는다. ChatGPT가 파일을 보는 순간 그것은 원격 제품 표면에 데이터를 준 것이므로, 처음부터 작게 주는 편이 안전하다.

ChatGPT Agent 파일 진입 경로

| ChatGPT 경로 | 용도 | 경계 | | Upload | 문서, PDF, CSV, log | 업로드된 복사본만 봄 | | Library | 재사용 파일 | 로컬 디스크 mirror 아님 | | Connector | cloud app/data | 계정과 조직 권한 의존 | | GitHub app | 선택 repo | unpushed diff는 안 보임 | | Agent tools | web/task flow | 임의 filesystem 권한 아님 |

Codex 경계: local, cloud, mobile control

Codex local은 프로젝트에서 시작한다. 앱에서는 폴더를 선택하고, IDE agent는 project directory를 읽고, CLI는 current directory에서 작업한다. 그래서 ChatGPT Agent보다 로컬 파일에 가깝게 느껴진다.

하지만 로컬에서 시작한다고 모든 권한이 열리는 것은 아니다. sandbox mode, permission profile, writable root, network policy, approval policy가 실제 행동을 정한다. 처음부터 danger-full-access를 켜기보다 workspace 범위에서 충분한지 확인한다.

Codex cloud는 또 다른 경로다. 저장소를 격리 환경에 clone하므로 push된 branch 작업에 좋지만, 로컬에만 있는 변경은 자동으로 모른다. mobile control도 휴대폰 파일 공유가 아니라 연결된 host나 cloud task를 조작하는 입구로 이해해야 한다.

| Codex 형태 | 파일 출처 | 확인점 | | Local app / IDE / CLI | 선택 workspace | sandbox와 approval | | Cloud thread | clone된 repository | branch 상태 확인 | | Mobile | connected host/cloud | 폰은 controller | | Computer Use | 보이는 UI | UI가 증거일 때만 |

Claude Code 경계: 로컬 능력에도 규칙이 있다

Claude Code local은 ChatGPT Agent보다 Codex local에 가깝다. 로컬 repository를 읽고, 파일을 수정하고, Bash command를 실행할 수 있다. 그래서 실제 checkout, test, build, local log가 필요한 작업에 적합하다.

권한은 mode와 rule로 나뉜다. read access, additionalDirectories, deny rules, file modification prompt, Bash allow/ask/deny, defaultMode, acceptEdits, auto, dontAsk, bypassPermissions는 각각 blast radius를 바꾼다.

bypassPermissions는 파일을 보이게 만드는 첫 해결책이 아니다. 확인을 줄일수록 바깥 격리가 더 중요하다. 임시 checkout, 테스트 계정, secret이 제거된 fixture, 민감 경로 deny가 준비된 뒤에만 넓은 권한을 고려한다.

| 질문 | Claude Code 제어 | 실무 의미 | | 어떤 path를 읽나 | read/additional dirs/deny | 읽기 범위 조정 | | 어떤 file을 바꾸나 | edit prompt/mode | diff 확인 | | 어떤 command를 실행하나 | Bash rules | 테스트도 권한 대상 | | prompt를 건너뛰나 | dontAsk/bypass | 격리 환경 전제 |

권한 층 비교: 보이는 것과 실행 권한은 다르다

visibility는 agent가 내용을 읽을 수 있는지이고, authority는 읽은 뒤 무엇을 할 수 있는지다. README 읽기, 결제 코드 수정, shell command 실행, network 접속, GUI 조작은 모두 다른 권한이다.

ChatGPT Agent의 쓰기는 생성 파일이나 connector action으로 나타난다. Codex local은 workspace write와 approval의 영향을 받는다. Claude Code local은 edit prompt, mode, Bash rule을 따른다. GUI control은 별도의 축이다.

좋은 권한 설명은 실행 전에 말할 수 있어야 한다. agent는 현재 repo만 읽고, src/와 tests만 수정하고, network command 전에는 묻고, .env를 만나면 멈춘다. 이 문장이 안 되면 아직 넓은 권한을 줄 준비가 아니다.

Codex와 Claude Code 로컬 권한 층

| 층 | ChatGPT Agent | Codex local | Claude Code local | | 발견 | upload/Library/connector/GitHub | workspace/current dir | session/rules | | 쓰기 | generated output/action | workspace write/approval | edit mode/prompt | | 명령 | product tool | local shell sandbox | Bash allow/ask/deny | | 네트워크 | connected service | profile/approval | tool environment | | 확장 | more data connection | profile/sandbox change | mode/bypass |

다섯 가지 파일 상태와 첫 조치

로컬 파일이라고 모두 같은 상태가 아니다. desktop의 PDF, 테스트가 있는 repo, uncommitted diff, push된 branch, secret이 들어 있는 config는 서로 다른 경로가 필요하다.

단일 문서는 ChatGPT upload, repo는 local agent, uncommitted diff는 local 유지 또는 의도적 push, push된 repo는 GitHub/cloud route, secrets는 redacted fixture 또는 isolated workspace가 기본이다.

불확실하면 작은 fixture를 만든다. secret을 제거하고 기대 결과를 적고 agent에게 read-only 분석부터 시킨다. 필요한 권한이 확인된 다음 write와 command를 넓힌다.

다섯 가지 파일 상태 체크리스트

  • 문서: 필요한 파일만 upload.
  • repo: workspace에서 diff와 test evidence 확인.
  • uncommitted: cloud가 모른다고 전제.
  • GitHub: repo와 branch 명시.
  • secrets: redact, deny, isolate 먼저.

파일 문제 해결처럼 보이는 위험한 지름길

danger-full-access와 bypassPermissions는 편리하지만 파일 경로 판단을 대신하지 않는다. 어느 표면이 어떤 파일을 소유하는지 정하지 않은 상태에서 모든 권한을 주면, 필요한 범위를 넘어서게 된다.

넓은 권한이 맞는 경우도 있다. disposable clone, container, scratch VM, 테스트 계정처럼 바깥 격리가 강한 경우다. 반대로 주 사용 노트북, 로그인된 브라우저, private repo, 고객 데이터가 있는 환경에서는 첫 선택지가 될 수 없다.

Computer Use도 마찬가지다. 설정 화면, 브라우저 플로우, desktop app, GUI bug처럼 UI 자체가 증거일 때 사용한다. 일반 파일과 repo는 file route, log, command route가 먼저다.

| 지름길 | 가능한 경우 | 멈출 경우 | | danger-full-access | disposable workspace | main PC와 secrets | | bypassPermissions | isolated environment | 확인 줄이기 목적 | | folder upload | redacted bundle | private files 혼재 | | GUI control | UI가 증거 | 보통 파일 읽기 |

실행 전 로컬 판단 체크리스트

시작 전에 묻는다. 단일 파일인가, repo인가. 테스트가 필요한가. uncommitted diff가 있는가. credentials가 필요한가. shell command, network, GUI가 필요한가. 답이 곧 경로다.

내용 이해만 필요하면 ChatGPT upload가 가볍다. 코드 변경과 검증이 필요하면 Codex local이나 Claude Code local이 맞다. remote review라면 clean branch를 push한다. production secret이 가까우면 먼저 isolated workspace를 만든다.

목표는 agent가 더 많이 보게 하는 것이 아니라 충분한 것만 보게 하는 것이다. 작은 권한으로 강한 agent를 쓰면 검증, rollback, 동료 설명이 쉬워진다.

| 확인 | yes이면 | 행동 | | single file | yes | upload / Library | | tests required | yes | local coding agent | | uncommitted diff | yes | local or push branch | | secrets nearby | yes | redact / deny / isolate | | GUI evidence | yes | narrow Computer Use |

권한 결정을 인수인계 가능한 기록으로 남기기

실무에서 위험한 지점은 agent가 파일을 못 보는 상황만이 아니다. 나중에 아무도 agent가 어떤 파일을 봤는지, 어디서 실행됐는지, 어떤 행동까지 허용됐는지 설명하지 못하는 상황이 더 위험하다. 권한 기록은 파일 경로, 실행 위치, 허용한 행동, 중지 조건 네 가지로 나눠 적어야 한다. 그래야 uploaded copy, GitHub branch, Codex local workspace, Claude Code session, cloud clone을 구분할 수 있다.

ChatGPT 경로에서는 전달한 자료를 정확히 적는다. 탈민감 처리한 로그와 PDF만 upload했다면 agent가 전체 프로젝트 폴더를 본 것처럼 요청을 쓰지 않는다. GitHub app을 썼다면 repo, branch, local unpushed diff가 포함되지 않는다는 점을 적는다. ChatGPT는 입력 경로가 명확한 대신 terminal이나 browser 때문에 로컬 디스크 권한이 있는 것처럼 보이기 쉽다.

Codex local에서는 workspace, sandbox, permission profile, write 범위, network policy, 실행한 command, approval이 필요한 command를 남긴다. 코드 작업에서는 이 기록이 diff와 test output을 해석하는 기준이 된다. Codex cloud를 쓰면 어느 branch가 clone되었는지, 손에만 있는 generated file이나 uncommitted diff가 빠져 있지는 않은지 별도로 확인한다.

Claude Code에서는 mode와 rules가 핵심이다. auto, dontAsk, bypassPermissions를 켰다면 disposable checkout, 실제 .env 제거, deny pattern, test account 같은 격리 조건도 같이 기록해야 한다. 확인을 줄일수록 바깥 격리가 강해야 한다. 그렇지 않은 bypass는 파일 가시성 문제를 나중에 감사하기 어려운 실행 문제로 바꾼다.

마지막으로 결과를 어디에 반영할지도 남긴다. ChatGPT가 설명과 표를 만들었더라도 실제 repo, 운영 도구, 고객 데이터에 반영하는 단계는 별도 확인이 필요하다. Codex나 Claude Code가 파일을 직접 고쳤다면 review owner, test command, rollback 방법까지 적어야 한다. 그래야 권한 부여가 단순한 신뢰가 아니라 검토 가능한 작업 흐름이 된다.

두 도구를 이어 쓸 때는 각 단계의 입력과 출력도 분리한다. ChatGPT가 업로드 문서를 요약하고 Codex가 repo를 고치며 Claude Code가 회귀 테스트를 돌린다면 세 단계가 보는 파일은 서로 다르다. 다음 agent가 이전 agent의 문맥을 자동으로 가진다고 가정하지 않는다.

이 기록은 길 필요가 없다. 다른 사람이 왜 upload로 부족했는지, 왜 local agent가 필요했는지, 왜 network를 허용하거나 막았는지, 어떤 디렉터리에서 멈춰야 하는지 이해할 수 있으면 충분하다. 실행 전에 설명할 수 없다면 sample을 줄이고 read-only 분석부터 시작한 뒤 필요한 권한만 넓힌다.

| 기록 항목 | 써야 할 내용 | 막는 위험 | | 파일 경로 | upload, Library, GitHub, workspace, GUI | 로컬 전체를 본다는 오해 | | 실행 위치 | ChatGPT 제품 환경, local shell, cloud clone, connected host | local과 cloud 상태 혼동 | | 허용 행동 | read, write, command, network, GUI | 가시성을 전체 권한으로 착각 | | 중지 조건 | .env, secrets, 고객 데이터, 미공개 diff | 편의 때문에 권한 확대 |

자주 묻는 질문

ChatGPT Agent에 terminal이 있는데 왜 로컬 폴더를 못 읽나요?

그 terminal은 ChatGPT 제품 환경의 도구이기 때문이다. 현재 프로젝트에서 열린 내 로컬 shell이 아니므로 upload, Library, connector, GitHub 승인 같은 경로가 필요하다.

ChatGPT Agent가 repo 전체를 처리할 수 있나요?

GitHub 같은 지원 경로로 전달하면 가능하다. 그러나 unpushed changes, local tests, generated files, private env가 중요하면 local agent가 더 맞다.

Codex local은 로컬이라 자동으로 안전한가요?

아니다. 안전성은 sandbox, permission profile, approvals, writable roots, network policy와 작업 환경 격리로 결정된다.

Codex mobile은 휴대폰 파일을 볼 수 있나요?

기본적으로 controller로 봐야 한다. 파일과 credentials는 connected host나 cloud task에 있으며, 휴대폰 파일은 별도 경로로 전달해야 한다.

Claude Code bypassPermissions는 모든 파일 접근인가요?

아니다. 일반 확인을 건너뛰는 높은 신뢰 모드다. 파일 경로 판단을 대신하지 않으며 isolated workspace에서만 신중하게 써야 한다.

.env 파일은 어떻게 하나요?

ChatGPT에 업로드하지 않는다. local agent에서는 deny rule, redacted fixture, secret 값을 출력하지 않는 검증 명령을 사용한다.

Computer Use는 언제 쓰나요?

보이는 UI가 증거일 때 쓴다. 설정 화면, 브라우저 흐름, desktop app, GUI bug가 그런 경우다. 일반 파일 읽기 경로가 아니다.

Share:

laozhang.ai

One API, All AI Models

AI Image

Gemini 3 Pro Image

$0.05/img
80% OFF
AI Video

Sora 2 · Veo 3.1

$0.15/video
Async API
AI Chat

GPT · Claude · Gemini

200+ models
Official Price
Served 100K+ developers
|@laozhang_cn|Get $0.1