mu 사용하기
권한과 안전
세 가지 권한 모드, Jev가 대신 승인할 수 있는 것, 반드시 지킬 제약, 위험한 명령, 외부 콘텐츠.
mu가 묻지 않고 얼마나 할 수 있는지가 권한 모드예요. 상태 표시줄과 앱의 입력창에 보이고, /permissions로 언제든 바꿀 수 있어요.
세 가지 모드
| 모드 | 묻지 않고 실행 | 여러분에게 물음 |
|---|---|---|
| 전체 접근 | 모든 것 | 없음 |
| Jev 승인(기본값) | 읽기, 프로젝트 안의 파일 편집, 작업에 필요하다고 Jev가 확신하는 것 | Jev가 확신하지 못하거나, 요청을 넘어선다고 보거나, 관련 없다고 보는 것 |
| 최소 권한 | 읽기만 | 모든 편집, 명령, 외부 동작, 서브 에이전트 |
/permissions full, /permissions jev, /permissions ask로 바로 바꿀 수 있어요. 바꾼 모드는 이 대화에 적용되고 새 대화의 기본값이 돼요. 이미 실행 중인 다른 대화는 각자의 모드를 유지해요. MU_PERMISSIONS=ask mu는 한 번 실행에만 모드를 정해요.
Jev가 승인하는 것
Jev 승인에서는 명령, 프로젝트 밖의 변경, 외부 동작, 서브 에이전트가 모두 먼저 Jev에게 가고, 질문은 하나예요. 이 호출이 작업과 여러분이 한 말에 필요한가, 그것을 넘어서는가, 관련 없는가, 아니면 불분명한가? 확률 0.8 이상의 필요함만 여러분 없이 실행돼요. 나머지는 모두 여러분에게 묻고, 그 이유도 알려 줘요. 예: Jev는 이 단계가 요청한 범위를 벗어난다고 봅니다.
판정기가 답할 수 없을 때(키가 없고 무료 Jev도 쓸 수 없을 때, 계정 잔액이 바닥났을 때, 또는 승인을 맡기지 않는 로컬 판정기만 있을 때) mu는 모든 단계를 여러분에게 묻고, 그 사실을 알려 줘요. mu setup으로 Jev 키를 설정하거나 모드를 바꾸세요.
mu가 물을 때
여러분이 필요한 호출에는 선택 창이 하나 떠요.
- 한 번 허용
- 이 대화 동안 허용: 호출에 안전한 범위가 있을 때만 나와요. 프로젝트 안의 모든 편집, 프로그램 하나(
git,npm,cargo같은 것은 하위 명령까지 포함해서, 모든npm이 아니라npm test), 프로젝트 밖의 파일 하나, 또는 도구 하나 - 허용 안 함
체이닝, 리디렉션, 치환이 들어간 명령이나 sudo, env로 시작하는 명령은 한 번만 허용할 수 있어요. Esc는 허용 안 함으로 처리돼요. 거부하면 모델에게 다른 우회로를 찾지 말고, 여러분에게 묻거나 그것 없이 계속하라고 알려요. 허용한 것은 모드를 바꾸거나 /permissions reset을 실행하면 잊혀요.
모든 모드에서 지켜지는 것
- 반드시 지킬 제약. migrations는 건드리지 마 같은 금지 사항은 작업 프레임에 원문 그대로 남아요. 무언가를 바꾸는 호출 전마다 제약을 확인하고, 위반이 확실하면 여러분이 한 말 그대로 보여 주며 막아요. 전체 접근에서도 마찬가지이고, 서브 에이전트도 같은 제약 아래에서 일해요.
- 읽기는 묻지 않아요: 파일 읽기, 검색, 목록 보기, 웹 검색과 웹 읽기, 그리고
git status나cat … | grep …처럼 읽기 전용 프로그램으로만 이루어진 셸 명령. - 모르는 도구는 물어요. MCP 도구처럼 mu가 모르는 도구는 권한이 필요해요.
- mu 자체 설정은 여러분의 것이에요.
~/.mu/agent를 건드리는 호출은 매번 물어요. Jev가 승인할 수 없어요.
위험한 명령
규칙이 위험해 보이는 명령을 표시해요. rm -rf, 강제 푸시, sudo, 내려받은 스크립트 실행 등이에요. Jev 승인에서는 여러분이 요청했다고 Jev가 확신할 때만 그런 명령이 실행되고, 최소 권한에서는 질문에 그 표시가 함께 나와요. 표시된 명령은 한 번만 허용할 수 있고, 대화 전체에 대해서는 허용할 수 없어요.
외부에서 온 콘텐츠
웹 페이지, 검색 결과, 내장 브라우저, MCP 서버는 AI를 조종하려고 쓴 글을 담고 있을 수 있어요. 규칙을 무시해, 이 파일을 보내, 이 명령을 실행해, 또는 대화를 밖으로 빼내는 링크 같은 것이요. 모델이 그런 결과를 읽기 전에 단락마다 검사하고, AI를 겨냥한 지시가 담긴 단락은 보류한 뒤 한 줄 안내로 바꿔요. 판정기가 제시간에 답하지 못해도, 명백한 인젝션 문구는 규칙으로 보류해요.
web_fetch 자체에도 제한이 있어요. 요청마다 시간과 크기 제한이 있고, 페이지 텍스트에는 신뢰할 수 없다는 표시가 붙고, 여러분이 허용하지 않는 한 사설 네트워크의 주소는 거부해요. 그래서 페이지가 읽는 쪽을 여러분의 로컬 네트워크로 끌어들일 수 없어요.
변경 되돌리기
파일을 편집하는 턴마다 첫 변경 전에, mu는 프로젝트를 자체 섀도 git 디렉터리에 스냅샷으로 남겨요. 여러분의 저장소, 인덱스, 브랜치는 절대 건드리지 않고, 프로젝트가 git 저장소일 필요도 없어요. 비밀을 담은 파일(.env, 키, 인증서)은 절대 스냅샷에 넣지 않아요.
/checkpoints는 대화의 현재 브랜치에 있는 체크포인트를 나열해요./rewind는 무엇이 바뀔지 먼저 보여 준 다음, 파일이나 대화, 또는 둘 다를 되돌려요. 그 뒤로 여러분이 직접 편집한 파일은 따로 나열하고 물어봐요./rewind undo는 마지막 되돌리기를 취소해요.
홈 폴더에서 시작한 세션과 아주 큰 프로젝트(담아야 할 파일이 5,000개 또는 200 MB 초과)에서는 체크포인트를 건너뛰고, 그 사실을 알려요. 목표 모드와 마무리도 보세요.