Cursor 에이전트 권한 설명: 어떤 것이 요청 없이 실행되는지, 그리고 이를 강화하는 방법
요약
본 문서는 Cursor 에이전트의 기본 권한 작동 방식과 보안 설정을 안내하는 개발자 가이드입니다. 파일 읽기, 편집, 터미널 명령 실행 등 다양한 동작에 대한 기본 권한 모델을 설명하며, 민감 정보 보호를 위한 `.cursorignore` 사용법과 터미널 명령어 실행 모드(Run Modes) 설정 방법을 제시합니다.
핵심 포인트
- 파일 읽기는 기본적으로 승인 없이 가능하므로 주의가 필요합니다.
- 민감 파일은 `.cursorignore`로 접근을 차단하는 것이 중요합니다.
- 터미널 명령은 기본적으로 승인을 요청하지만, Run Modes를 통해 허용 목록화할 수 있습니다.
- 허용 목록에는 `npm test`, `git status` 등 읽기 전용/로컬 명령어만 포함해야 합니다.
Cursor의 에이전트는 코드베이스를 읽고, 파일을 편집하고, 터미널 명령을 실행하며, MCP 도구를 호출할 수 있습니다. 이 중 얼마나 많은 부분이 사용자에게 묻지 않고 발생하는지는 쉽게 지나치기 쉬운 몇 가지 설정으로 제어됩니다. 본 가이드에서는 Cursor 에이전트 권한이 기본적으로 어떻게 작동하는지, 각 컨트롤이 실제로 무엇을 관리하는지, 그리고 실제 프로젝트를 위해 막아야 할 허점들을 설명합니다.
아래에 있는 Cursor의 기본값에 관한 모든 내용은 Cursor의 Agent Security documentation에서 가져왔습니다. 주요 릴리스 이후에는 기본값이 변경될 수 있으니 다시 확인해 보세요.
평이한 용어로 본 기본 권한 모델
| 동작 | 기본 동작 |
|---|---|
| 파일 읽기, 코드 검색 | 승인 없이 실행 |
| ... | |
| 두 가지 결과가 즉시 뒤따릅니다: |
- 읽기는 무료입니다. 워크스페이스에 있고 무시되지 않은 파일은 에이전트가 읽을 수 있다고 가정합니다.
- 편집 사항은 검토하기 전에 적용됩니다. Cursor의 문서는 자동 새로고침(auto-reload) 기능이 활성화된 경우, 에이전트 변경 사항이 사용자가 확인하기 전에 실행될 수 있다고 경고합니다. 파일 변경 시 다시 시작하는 개발 서버나 테스트 감시자(test watchers)를 생각해보세요.
컨트롤 1: 에이전트가 절대 보면 안 되는 파일을 위한 .cursorignore
읽기는 승인이 필요하지 않기 때문에, 민감한 파일에 대한 주요 레버는 일치하는 경로에 대해 에이전트의 접근을 차단하는 .cursorignore입니다. 합리적인 시작점은 다음과 같습니다:
# 비밀 정보 및 자격 증명
.env
.env.*
...
두 가지 주의사항이 있습니다. 첫째, .cursorignore는 Cursor 자체의 파일 접근을 관리합니다. 에이전트가 실행하는 터미널 명령(cat .env)은 별도의 경로이며, 이는 명령어 승인에 의해 관리됩니다. 둘째, 파일을 무시하는 것이 비밀 정보가 디스크에 없다는 것과 같지는 않습니다. 이 컨트롤의 가장 강력한 버전은 아예 프로덕션 비밀 정보를 작업 트리(working tree)에 두지 않는 것입니다.
컨트롤 2: 터미널 명령을 위한 실행 모드 (Run Modes)
기본적으로 모든 터미널 명령어는 승인을 요청합니다. 이는 안전하지만 금방 지치게 만들고, 결국 사람들이 모든 것을 승인하게 만듭니다. 실행 모드(Run Modes)를 사용하면 신뢰할 수 있는 명령이 프롬프트 없이 실행되도록 할 수 있으며, 간단한 허용 목록(allowlist)부터 자동 검토 분류기(Auto-review classifier)까지 다양합니다.
Cursor는 이를 '엄격한 보안 경계라기보다는 최선의 노력을 기울인 가드레일(best-effort guardrails)'로 설명하며, 그 틀이 정확합니다. 실질적인 조언은 다음과 같습니다:
- 정확하고 읽기 전용 또는 프로젝트 로컬 명령어 허용 목록화:
npm test,npm run lint,git status,git diff. - 접두사(
python,node,curl,bash)를 이용한 인터프리터 및 네트워크 도구의 허용 목록화는 피해야 합니다. 예를 들어,python이라는 접두사는python -c "<아무거나>"도 실행할 수 있게 합니다. - 명령어 매칭은 에이전트가 제출하는 문자열에 대한 것이라는 점을 기억하세요.
npm test && curl … | sh는npm test와 다른 명령어이며, 허용 목록도 그렇게 처리해야 합니다.
Control 3: MCP 승인 및 MCP 허용 목록
모든 MCP 연결은 사용자의 승인이 필요하며, 특정 도구를 MCP 허용 목록으로 사전에 승인하지 않는 한 모든 도구 호출 역시 승인이 필요합니다. 가장 쉬운 유혹은 일단 잘 작동하는 것처럼 보이는 전체 서버를 허용 목록에 추가하는 것입니다.
더 나은 방법은 이름을 통한 읽기 전용 도구(list_issues, get_file_contents)만 허용 목록에 추가하고, 쓰기(writes), 삭제(deletes), 게시(posts) 또는 배포(deploys)와 관련된 것은 수동 승인을 유지하는 것입니다. 또한 각 서버가 무엇에 접근할 수 있는지 검토해야 합니다. 사용자의 홈 디렉터리를 루트로 하는 파일 시스템 서버는 '읽기 전용'이라는 약속이 실제보다 훨씬 더 큰 의미를 갖게 만듭니다.
Control 4: 생소한 저장소에 대한 작업 공간 신뢰(workspace trust)
Cursor는 VS Code 스타일의 작업 공간 신뢰 기능을 지원하지만, 기본적으로 비활성화되어 있습니다. 사용자 settings.json에서 이를 활성화할 수 있습니다:
{
"security.workspace.trust.enabled": true
}
Cursor는 제한 모드가 AI 기능을 손상시키므로, 신뢰하지 않는 저장소는 기본 텍스트 편집기에서 여는 것을 권장한다고 언급합니다. 조직은 MDM을 통해 이 설정을 강제할 수 있습니다.
Control 5: 사용자 지정 검사를 위한 훅(hooks)
Cursor는 또한 에이전트 작업 주변에 자체 스크립트를 실행할 수 있게 해주는 훅도 지원합니다. 패턴 허용 목록으로는 표현할 수 없는 규칙(
위의 모든 설정을 잘 구성하더라도:
- 작업 공간(Workspace) 편집은 승인이 필요하지 않습니다. 에이전트는
package.json스크립트,Makefile, 또는 CI 워크플로우를 재작성할 수 있으며, 사용자가 허용 목록에 추가한 다음 명령어(npm test)가 수정된 스크립트를 실행합니다. - 허용 목록은 효과(effects)가 아닌 문자열과 일치합니다. 다르게 철자된 동등한 명령어는 통과하거나 막힐 수 있습니다.
- MCP 서버는 사용자의 자격 증명으로 실행됩니다. 승인 프롬프트에는 도구 호출이 표시되지만, 서버가 어떤 토큰을 사용할지는 표시되지 않습니다.
완화책(mitigations)은 주로 위생 관리(hygiene)에 관한 것입니다. 즉, 작업을 위임하기 전 버전 관리를 수행하고, 스크립트 및 CI 파일의 diff를 검토하며, 토큰 범위를 좁히는 것과 더불어 중요한 동작에 대한 정책 결정 지점(policy decision point)을 마련하는 것입니다.
MCP 호출을 위한 정책 계층 추가
Cirvix AgentControl은 Cursor의 MCP 서버 앞에 배치할 수 있는 오픈 소스 권한 부여 계층입니다. Cursor는 유일한 MCP 서버로 cirvix gateway와 통신하며, 이 게이트웨이가 실제 서버를 실행하고 라우팅된 모든 도구 호출을 정책 파일과 비교하여 전달하기 전에 허용(permit), 지정된 승인자에게 보류(hold), 또는 거부(deny) 중 하나로 평가합니다. 기본값은 거부입니다.
npm install -g @cirvix_ai/agent-control
cirvix init
cirvix policy check
그런 다음 Cursor MCP 설정의 서버를 단일 게이트웨이 항목으로 대체하고, 원래 정의는 별도의 업스트림(upstreams) 파일에 유지합니다:
{
"mcpServers": {
"cirvix": {
...
아무것도 실행하지 않고 결정 사항을 확인해 보세요:
cirvix check --action fs.read --resource .env
cirvix audit verify
경계가 중요합니다: 게이트웨이가 이를 통해 라우팅되는 MCP 호출을 관리합니다. Cursor의 내장 파일 읽기, 편집 및 터미널 명령어는 MCP를 거치지 않으므로, 여전히 위에서 언급된 Cursor 자체 권한에 의해 관리됩니다. 둘 다 사용하세요: 내장 기능에는 Cursor의 제어를, 타사 도구(사용자 자격 증명을 보유)에는 정책 계층을 사용하십시오.
빠른 체크리스트
• [ ] .cursorignore는 비밀 정보(secrets) 및 상태 파일(state files)을 포함합니다
• Run Mode allowlist에는 정확한 명령어만 포함되며, 인터프리터 접두사(interpreter prefixes)는 없습니다
• MCP allowlist는 이름으로 읽기 전용 도구로 제한됩니다
• Workspace trust는 생소한 리포지토리(repos)를 여는 머신에 대해 활성화됩니다
• 스크립트 및 CI 파일은 실행 전에 차이점(Diffs)을 검토합니다
• MCP 서버는 범위가 지정되고(scoped), 고정되며(pinned), 좁은 토큰을 보유합니다
Cirvix AgentControl on GitHub: https://github.com/CIRVIX/agent-control
Docs: https://cirvix.com
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기