Mục lục

gemini --yolo (hoặc dạng đầy đủ gemini --approval-mode=yolo) là cờ chạy Gemini CLI ở chế độ tự động duyệt toàn bộ tool call - file edit, shell command, network call đều thực thi ngay không hỏi xác nhận. Đây là phiên bản "YOLO mode" của Google, tương đương --dangerously-skip-permissions của Claude Code và --dangerously-bypass-approvals-and-sandbox của Codex CLI.

Cờ này làm gì

Mặc định Gemini CLI prompt trước mỗi shell command, file modification, và operation có khả năng phá hoại. YOLO mode (You Only Live Once) tắt hết các prompt đó. Quan trọng: Gemini bật sandbox tự động khi dùng --yolo - mặc định nó pull pre-built Docker image gemini-cli-sandbox và chạy session bên trong. Đây là khác biệt lớn so với Claude Code (không tự sandbox).

Ba cách bật YOLO

1. Cờ command line (xài cho một session):

gemini --yolo "fix all lint errors in the project"

Hoặc dạng mới đang được Google đẩy làm default:

gemini --approval-mode=yolo "fix all lint errors"

Không xài lẫn --yolo với --approval-mode trong cùng một lệnh, CLI sẽ báo lỗi.

2. Phím tắt Ctrl+Y trong session interactive: bật tắt nhanh không cần restart CLI.

3. Settings file~/.gemini/settings.json hoặc .gemini/settings.json trong project:

{
  "general": {
    "defaultApprovalMode": "yolo"
  },
  "security": {
    "disableYoloMode": false
  }
}

Lưu ý: chỉ có thể bật YOLO qua command line theo design mới của Gemini - settings file chỉ enable trạng thái permanent, vẫn cần flag để activate thực sự.

Bốn approval mode của Gemini

  • default: prompt cho từng tool call. Mặc định.
  • auto_edit: tự duyệt edit file (replace, write_file) nhưng vẫn prompt cho shell. Giống acceptEdits của Claude.
  • plan: read-only mode dùng để model viết kế hoạch trước, review xong mới apply. Tương đương plan mode của Claude.
  • yolo: auto-approve tất cả.

Cú pháp đầy đủ cho automation

Headless mode dùng cho CI/CD - kết hợp -p (prompt từ command line) với --yolo:

gemini -p "run my tests and fix errors" --yolo

Pipe input từ file:

cat task.md | gemini --yolo

Restrict tool dù trong YOLO:

gemini --yolo --allowed-tools "ShellTool(git status)" "review repo"

Custom sandbox Dockerfile

Khác với Claude Code phải tự setup container, Gemini cho phép custom sandbox dễ dàng. Tạo .gemini/sandbox.Dockerfile trong root project:

FROM gemini-cli-sandbox
RUN apt-get update && apt-get install -y your-tooling
COPY ./my-config /app/my-config

Sau đó chạy với env var:

BUILD_SANDBOX=1 gemini --yolo "task"

CLI sẽ tự build custom image và mount workspace vào.

Policy Engine - layer chặn nguy hiểm dù YOLO

Đây là điểm Gemini làm tốt hơn Claude Code. Policy Engine cho phép định nghĩa lệnh nào auto-approve, lệnh nào auto-deny, lệnh nào vẫn prompt - và policy này thắng cả YOLO mode.

Tạo ~/.gemini/policies/safe.yaml:

rules:
  - pattern: "rm -rf *"
    action: deny
  - pattern: "git push *"
    action: deny
  - pattern: "git *"
    action: allow
  - pattern: "npm test"
    action: allow

Với policy này, dù bật --yolo, rm -rfgit push vẫn bị chặn cứng.

Permanent wrapper - alias luôn YOLO

Thêm vào ~/.bashrc hoặc ~/.zshrc:

alias gemini-yolo='gemini --approval-mode=yolo --skip-trust'

PowerShell ($PROFILE):

function gemini-yolo {
    & (Get-Command gemini -CommandType Application | Select-Object -First 1).Source `
        --approval-mode yolo `
        --skip-trust `
        @args
}

--skip-trust để bypass cả "Do you trust this workspace?" prompt khi mở project mới.

Rủi ro thực tế

  • Sandbox built-in của Gemini không phải bullet-proof - nếu workspace mount vào sandbox có credential, malicious prompt vẫn exfil được.
  • YOLO + workspace mount = AI có thể commit và push lên remote nếu bạn không deny git push trong policy.
  • Subagent inherit YOLO mode tương tự Claude - nếu agent spawn sub-task, sub-task không bị prompt lại.

So sánh với Claude và Codex

Tool Cờ bypass Sandbox mặc định Policy override YOLO
Claude Code --dangerously-skip-permissions Không (tự setup container) Hooks (PreToolUse)
Gemini CLI --yolo / --approval-mode=yolo Có (gemini-cli-sandbox Docker image) Policy Engine (yaml)
Codex CLI --dangerously-bypass-approvals-and-sandbox Có (codex-linux-sandbox) execpolicy .rules

Khi nào dùng

Dùng --yolo khi:

  • Chạy trong Docker container đã isolate đủ - nhất là khi không có credential mount vào
  • CI/CD pipeline cần fully automated
  • Task scope hẹp, đã có git checkpoint
  • Đã định nghĩa Policy Engine block các lệnh phá hoại

Không dùng khi:

  • Workspace có file .env chứa API key chưa được gitignore đúng
  • Repo có uncommitted change quan trọng
  • Trên shared dev machine - file của user khác có thể bị ảnh hưởng

Tóm lại

Cờ --yolo của Gemini CLI là vũ khí mạnh nhất để tự động hóa task dài hơi. So với Claude Code, Gemini có lợi thế là sandbox bật mặc định và Policy Engine cho phép define hard deny rule cross-session. Vẫn áp dụng đúng nguyên tắc: container + git checkpoint + policy = an toàn. Chạy bare metal trên máy có credential = đếm ngược tới ngày mất file.

Chia sẻ bài viết