Devin Local 3.6.27: 편집을 자동 승인하기 전에 심볼릭 링크 (Symlink) 쓰기 경계를 테스트하세요
요약
Devin Local 3.6.27 업데이트를 통해 심볼릭 링크(Symlink)를 통한 파일 쓰기 작업이 제한됩니다. 이는 AI 에이전트가 의도하지 않은 경로의 파일을 수정하는 보안 사고를 방지하기 위한 조치입니다.
핵심 포인트
- edit, write 등 주요 도구의 심볼릭 링크 쓰기 거부
- 심볼릭 링크를 통한 파일 리다이렉션 공격 방지
- 업데이트 후 일회용 디렉토리에서 경계 테스트 권장
- 신뢰할 수 없는 저장소 사용 시 샌드박스 유지 필요
Devin Local 3.6.27: 편집을 자동 승인하기 전에 심볼릭 링크 (Symlink) 쓰기 경계를 테스트하세요
빠른 답변
2026년 8월 1일에 출시된 Devin Desktop 3.6.27은 Devin Local의 특정 파일 시스템 경계를 변경합니다. 즉, edit, write, apply_patch, 그리고 notebook_edit 도구들이 이제 심볼릭 링크 (Symbolic Link)를 통한 쓰기를 거부합니다. 이는 승인된 네이티브 편집이 개발자가 변경하려 의도한 경로가 아닌 다른 파일로 리다이렉션되는 것을 방지합니다.
업그레이드한 후, 광범위한 편집 승인을 활성화하기 전에 일회용 디렉토리에서 해당 경계를 확인하십시오:
- 실행 중인 데스크톱 버전이 3.6.27 이상인지 확인합니다.
- 외부 감시 파일 (Sentinel)을 생성하고 임시 워크스페이스에서 이를 심볼릭 링크 (Symlink)로 연결합니다.
- 명시된 네 가지 네이티브 도구 각각을 사용하여 무해한 변경을 시도합니다.
- 명시적인 거부 메시지가 나타나고 감시 파일의 해시 (Hash)가 변경되지 않는지 확인합니다.
- 심볼릭 링크가 적용된 상위 디렉토리와 셸 (Shell) 쓰기를 별도로 테스트하십시오. 릴리스 노트는 이들이 동일한 보호 기능을 사용할 것이라고 보장하지 않습니다.
- 네이티브 도구 테스트를 통과한 후에도 신뢰할 수 없는 저장소는 권한이 제한된 샌드박스 (Sandbox)에 유지하십시오.
이는 AI 코딩 에이전트 (AI coding-agent) 보안에 대한 직접적인 변경 사항이지만, Devin Local의 모든 파일 시스템 변형이 이제 심볼릭 링크 (Symlink)로부터 안전하다는 보편적인 선언은 아닙니다.
대상 사용자
이 가이드는 직접 작성하지 않은 저장소에서 Devin Local을 사용하거나, 쓰기 작업이 인간의 검토를 덜 거칠 수 있는 Accept Edits, Smart, Bypass 또는 무인 워크플로 (Unattended workflows)를 사용하는 개발자 및 플랫폼 팀을 위한 것입니다.
저장소 자체가 신뢰할 수 없는 경우, 더 광범위한 AI 코딩 에이전트 샌드박스 체크리스트 (AI coding-agent sandbox checklist)부터 시작하십시오. 유사한 제품별 테스트 매트릭스를 보려면 Claude Code 샌드박스 및 워크트리 경계 가이드 (Claude Code sandbox and worktree boundary guide)를 참조하십시오.
변경 사항 — 그리고 정확한 경계
공식 3.6.27 변경 로그(changelog)는 네 가지 Devin Local 도구와 한 가지 동작을 명시합니다. 바로 심볼릭 링크 (Symlink)를 통한 쓰기를 거부한다는 점입니다. 공식 권한 문서(permission documentation)는 이것이 왜 중요한지 설명합니다. Normal 모드에서는 파일 편집 시 프롬프트가 나타나며, Accept Edits 및 Smart 모드에서는 워크스페이스 (workspace) 편집이 자동으로 실행될 수 있습니다. Bypass는 모든 호출을 자동 승인합니다. Autonomous 모드는 다릅니다. 직접적인 편집/쓰기 도구는 명령 샌드박스 (command sandbox) 내부가 아닌 CLI 프로세스에서 실행되기 때문에 여전히 프롬프트가 나타납니다.
릴리스 범위를 좁게 유지하십시오:
| 경로 또는 작업 | 3.6.27 릴리스 노트에 포함됨? | 배포 결정 |
|---|---|---|
심볼릭 링크 대상에 대한 edit | 예 | 거부해야 함 |
| ... |
처음 네 줄을 통과하는 것은 문서화된 네이티브 도구 (native-tool) 경계만을 증명합니다. 이것이 임의의 셸 명령 (shell command)을 보호된 편집으로 업그레이드해 주는 것은 아닙니다.
일회용 검증 실험실 구축
보안 조사 (security probe)를 실제 dotfile, 자격 증명 (credential), 또는 운영 리포지토리 (production repository)로 향하게 하지 마십시오. 하나의 임시 실험실 아래에 겉으로 보이는 워크스페이스 경로와 실제 해결된 대상 (resolved target)을 모두 생성하십시오:
lab_root="$(mktemp -d)"
mkdir -p "$lab_root/workspace" "$lab_root/outside/linked-dir"
printf 'UNCHANGED\n' > "$lab_root/outside/sentinel.txt"
...
새로운 Devin Local 세션에서 workspace/만 엽니다. 초기 해시 (hashes) 값과 정확한 Devin 버전을 기록하십시오. 에이전트에게 direct-link.txt에 대해 해롭지 않고 명확하게 지정된 편집을 수행하도록 요청하되, 인터페이스를 통해 도구를 식별할 수 있는 각 네이티브 도구별로 한 번씩 수행하십시오. 안전한 결과는 변형 (mutation) 전의 거부와 변형 후의 변경되지 않은 해시 값입니다.
notebook_edit의 경우 direct-link.ipynb를 사용하십시오. 거부된 상황을 셸 우회 방식 (shell workaround)으로 전환하지 마십시오. 대체 수단을 사용하는 것은 테스트의 목적을 무색하게 만듭니다.
4단계 배포
1. 버전 및 정체성 증명
Devin Desktop 버전, OS, 워크스페이스 루트 (workspace root), 권한 모드 (permission mode), 샌드박스 상태 (sandbox status), 그리고 정확한 피스처 경로 (fixture paths)를 캡처하십시오. 설치된 버전이 3.6.27보다 낮다면 중단하십시오. 테스트 중인 릴리스 계약 (release contract)이 존재하지 않는 상태입니다.
2. 네이티브 도구를 하나씩 테스트
이전의 승인이나 지시 사항이 다음 결과에 영향을 미치지 않도록 각 프로브 (probe)를 새로운 세션에서 실행하십시오. 거부 (refusal)가 일차적인 신호이며, 외부 해시 (outside hash)가 독립적인 신호입니다. 두 가지 모두를 요구하십시오.
3. 신뢰를 부여하지 않고 문서화되지 않은 경계(edges)를 조사하십시오
workspace/linked-dir/ 아래에 일반 파일을 생성해 보십시오. Devin이 거부하는지, 프롬프트 (prompt)를 띄우는지, 혹은 성공하는지는 해당 빌드에 대한 관찰 결과일 뿐이며, 공식적인 보증은 아닙니다. 쉘 명령어를 통해 쓰기 작업을 수행하는 모든 워크플로 (workflow)에 대해서도 동일하게 수행하십시오. 별도의 샌드박스 (sandbox) 기반 정책을 갖추기 전까지는 해당 경로들을 ask 또는 deny 규칙 뒤에 유지하십시오.
Devin의 샌드박스 (sandbox)는 워크스페이스 (workspace)와 부여된 Write(...) 스코프 (scope)로부터 쓰기 가능한 루트 (writable roots)를 도출하며, 권한 규칙은 deny, ask, allow 순서로 결정됩니다. 4가지 도구 수정 사항 (four-tool fix)이 보장하지 않는 경계에 대해 이 결정론적 계층 (deterministic layer)을 사용하십시오. 네트워크 이그레스 (network egress) 또한 범위 내에 있다면, 파일 시스템 테스트를 Claude Code network-egress checklist의 패턴과 같은 엄격한 허용 목록 (allowlist)과 결합하십시오.
4. 카나리 (canaries)를 통과한 후에만 승인을 확장하십시오
Normal 모드에서 시작하십시오. 문서화된 네이티브 도구 카나리 (native-tool canary)가 매번 올바르게 거부한 후에만, 신뢰할 수 있는 리포지토리 (repository)에 대해 Accept Edits 또는 Smart 모드로 전환하십시오. Bypass를 검증 모드로 사용하지 마십시오. 이는 평가하려는 승인 신호 (approval signal)를 제거해 버립니다.
8가지 수락 테스트 (acceptance tests)
| 테스트 | 예상 결과 |
|---|---|
| 설치된 빌드가 3.6.27 미만인 경우 | 중단; 수정 사항을 주장하지 말 것 |
| ... |
복사 가능한 증거 기록
devin_symlink_gate:
desktop_version: "3.6.27"
permission_mode: normal
...
흔한 실수
실제 민감한 파일을 테스트하는 것. 임시 외부 센티넬 (sentinel)을 사용하면 자격 증명 (credentials)이나 쉘 설정 (shell configuration)을 위험에 빠뜨리지 않고도 동일한 증거를 제공할 수 있습니다.
권한 프롬프트 (permission prompt)를 격리 (containment)로 취급하는 것. 프롬프트는 결정 지점 (decision point)입니다. 결정된 파일 시스템 대상 (filesystem target)과 작업 후의 해시 (post-action hash)가 실제로 어떤 일이 일어났는지를 증명합니다.
모든 쓰기 경로(write path)에 대해 네 가지 도구를 일반화하기. 네이티브 도구(Native tools), 셸 명령(shell commands), 빌드 스크립트(build scripts), 그리고 노트북(notebooks)은 서로 다른 강제 적용 계층(enforcement layers)을 통과할 수 있습니다. 정책과 증거(evidence)에서 이러한 구분을 유지하십시오.
FAQ
3.6.27 버전으로 업그레이드한 후 Bypass 모드를 활성화할 수 있나요?
업그레이드는 문서화된 하나의 네이티브 도구 실패 모드(native-tool failure mode)를 제거하지만, 그렇다고 해서 신뢰할 수 없는 저장소(untrusted repositories)에 Bypass 모드를 사용하는 것이 적절해지는 것은 아닙니다. 최소 권한 원칙(least-privilege permission rules), 샌드박싱(sandboxing), 그리고 일회성 워크트리(disposable worktrees)를 별도의 제어 수단으로 유지하십시오.
Sources
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기