claude --dangerously-skip-permissions là cờ (flag) chạy Claude Code ở chế độ bypassPermissions - Claude tự động duyệt mọi thao tác chỉnh sửa file, chạy shell command, gọi network mà không hỏi xác nhận. Đây là chế độ mà Anthropic gọi là "Safe YOLO mode", dành cho tự động hóa dài hơi không cần người ngồi nhấn Allow.
Cờ này làm gì
Mặc định Claude Code dừng lại hỏi trước mỗi lần ghi file, chạy bash, gọi API. Với một task refactor 10 file, bạn nhấn approve 30+ lần. --dangerously-skip-permissions tắt hết các prompt đó. Cùng tác dụng với --permission-mode bypassPermissions.
Cụ thể, cờ này bỏ qua:
- Permission prompt cho mọi tool (Read, Edit, Write, Bash, WebFetch, MCP tools)
- Command blocklist (mặc định chặn curl, wget và các lệnh fetch network)
- Hạn chế write access ngoài working directory
- Hooks vẫn chạy bình thường, nên PreToolUse hook có thể dùng làm guardrail tự build
Từ phiên bản v2.1.126 trở đi, cờ này cũng bypass luôn cả ghi vào protected paths (trước đó vẫn prompt). Chỉ còn một circuit breaker duy nhất: rm -rf / hoặc rm -rf ~ vẫn bị chặn.
Khi nào dùng
Dùng được:
- Trong Docker container hoặc VM cô lập (Anthropic ship sẵn devcontainer reference có firewall rule)
- CI/CD pipeline headless - không có người nhấn approve, nên flag này gần như bắt buộc
- Task scope rõ ràng, đã commit git checkpoint trước khi chạy
- Background tasks dài (build C compiler, refactor toàn repo, generate test suite) - nhân viên Anthropic chạy 16 agent song song với cờ này, nhưng trong container
Không dùng:
- Trên máy host có SSH key, .env, browser cookie, keychain
- Repo còn uncommitted changes
- Khi chạy với root/sudo - Claude Code tự refuse start trên Linux/macOS để chống tự bắn vào chân
- Session dài quá - context rot làm model giả định sai, không có permission prompt làm checkpoint nữa
Cú pháp cơ bản
claude --dangerously-skip-permissions "Fix all lint errors"
Tương đương:
claude --permission-mode bypassPermissions "Fix all lint errors"
Chạy headless trong CI:
claude -p "Review PR diff and suggest improvements" \
--dangerously-skip-permissions \
--output-format stream-json
Alias cho gõ nhanh
Thêm vào ~/.zshrc hoặc ~/.bashrc:
alias yolo="claude --dangerously-skip-permissions"
Sau đó:
yolo "Refactor src/auth module, add tests, commit per file"
Sự cố thực tế đã có người dính
Tháng 10/2025, dev tên Mike Wolak chạy Claude Code trên Ubuntu/WSL2 trong nested directory - Claude execute rm -rf bắt đầu từ root /. Log lỗi cho thấy hàng ngàn "Permission denied" trên /bin, /boot, /etc. Issue #10077 trên GitHub có đầy đủ forensic log.
Khảo sát của eesel AI: 32% dev dùng cờ này từng gặp ít nhất một lần file bị sửa ngoài ý muốn, 9% report data loss.
Cách dùng an toàn
1. Luôn chạy trong container. Anthropic có reference devcontainer với firewall rule whitelist npm registry, GitHub, Claude API; default-deny tất cả egress còn lại.
docker run -it --rm -v $(pwd):/workspace -w /workspace \
--network none \
claude-code:latest --dangerously-skip-permissions "task"
2. Commit git checkpoint trước khi chạy. Coi git history là rollback layer thay cho permission prompt.
git add -A && git commit -m "Checkpoint pre-YOLO"
claude --dangerously-skip-permissions "Refactor X"
# Nếu hỏng:
git reset --hard HEAD
3. Kết hợp với --disallowedTools. Note: --allowedTools có bug bị bypass mode ignore, dùng --disallowedTools ổn định hơn:
claude --dangerously-skip-permissions \
--disallowedTools "Bash(rm:*)" "Bash(git push*)" \
"Refactor module"
4. Xem xét dùng auto mode (mới từ tháng 3/2026) thay vì YOLO. Auto mode có classifier review từng action, chặn các action nguy hiểm thay vì hỏi user. Nếu 3 lần liên tiếp hoặc 20 lần tổng trong session bị block, Claude pause và escalate cho người.
Lưu ý quan trọng về subagent
Khi enable bypass mode, tất cả subagent kế thừa full autonomous access. Không override được. Permission mode trong frontmatter của subagent bị ignore. Nghĩa là một subagent đọc file bị prompt injection có thể tự chạy lệnh phá hoại mà parent agent không kiểm soát được.
Tóm lại
Cờ --dangerously-skip-permissions là công cụ tăng năng suất cực mạnh cho long-running task, CI/CD, batch refactor. An toàn không phải property của cờ - nó là property của môi trường bạn chạy. Container + git checkpoint + scope task rõ ràng = dùng được hằng ngày. Chạy bare metal trên máy có credential = một prompt sai là mất sạch.
Hướng dẫn nhanh cho 2 model còn lại
Cùng nguyên tắc - chỉ khác cú pháp cờ và mức sandbox mặc định. Đọc bài tương ứng để dùng đúng:
Gemini CLI · gemini --yolo
Tóm tắt: YOLO mode auto-approve toàn bộ tool call. Khác Claude: Gemini tự bật sandbox Docker (gemini-cli-sandbox image) khi dùng cờ này.
Cú pháp nhanh:
gemini --yolo "fix all lint errors"
Hoặc dạng mới Google đang đẩy làm default:
gemini --approval-mode=yolo "fix all lint errors"
Đặc điểm: Có Policy Engine (yaml ở ~/.gemini/policies/) cho phép define hard-deny rule thắng cả YOLO. Có thể bật/tắt nhanh trong session bằng Ctrl+Y. Custom sandbox Dockerfile tại .gemini/sandbox.Dockerfile.
An toàn nhất khi: tận dụng Policy Engine để block rm -rf, git push, etc - kể cả khi YOLO bật vẫn an toàn.
Codex CLI · codex --dangerously-bypass-approvals-and-sandbox
Tóm tắt: Bỏ qua cả approval lẫn sandbox cùng lúc. Alias --yolo. Tên dài có chủ ý để bạn nghĩ kỹ trước khi gõ.
Cú pháp nhanh:
codex --dangerously-bypass-approvals-and-sandbox "Apply migration"
Đặc điểm: Codex tách 3 trục độc lập - approval_policy, sandbox_mode, network_access. Có sandbox Linux native (bubblewrap). Đa số trường hợp nên dùng --full-auto (= on-request + workspace-write) thay vì full bypass. Hỗ trợ named profile trong ~/.codex/config.toml.
An toàn nhất khi: bắt đầu từ --full-auto, chỉ nâng lên full bypass khi chạy trong devcontainer OpenAI ship sẵn (bubblewrap + firewall).
Cả 3 cờ này đều là vũ khí mạnh nhất để tự động hoá long-running task / CI - và đều có khả năng phá máy nếu chạy bare metal. Containerize trước, git checkpoint trước, rồi mới gõ.
