如果剛開始用 Claude Code,應該很快就會遇到一個狀況:對它說「幫我整理一下這個資料夾」,結果畫面突然跳出一行看起來像外星語的文字,問你要不要 Allow。你盯著那行指令看了三秒,完全不知道它要做什麼,心裡想著「按 Allow 會不會把我的電腦搞壞?按 Deny 會不會什麼都做不了?」——如果你有過這種感覺,這篇文章就是為你寫的。
之前寫了 Claude Code 入門使用教學 和 非工程師應用教學,但都沒有專門講「怎麼判斷 Claude Code 要執行的指令是不是安全的」。這其實是很多新手最焦慮的事情——不是不信任 AI,而是看不懂它要做什麼。這篇就來把這件事講清楚。
因為這篇文章是判斷終端機指令是否安全,因此 ChatGPT Codex、Gemini CLI 等用戶也是通用的。
那個跳出來的確認畫面是什麼
Claude Code 在運作的時候,有些操作它會自己默默做完(比如讀取檔案內容),但有些操作它會先停下來問你:「我接下來要執行這個指令,你同意嗎?」這就是 Claude Code 的權限確認機制。

例如上圖可以看到,我對 Claude Code 說「分析 /bin 有哪些檔案」,AI 會控制 Claude Code 會讀取目前所在專案以外的資料夾,而且還是比較敏感的 /bin 資料夾,會觸發 Claude Code 的權限警告,因此詢問了使用者是否允許 AI 讀取這些資料夾。
仔細看確認畫面,你會發現除了單純的 Allow / Deny 之外,還有一個選項像是「Yes, allow reading from bin/ from this project」。這代表針對這個專案,以後同樣的操作都自動允許,不會再問你。這個功能很方便,但新手建議先不要急著選這個,等你熟悉了哪些操作是安全的之後再開啟。如果不小心開了想要撤銷,後面會教你怎麼處理。
具體來說,Claude Code 把操作分成三個等級:
| 操作類型 | 是否需要你確認 | 範例 |
|---|---|---|
| 唯讀操作 | 不需要,自動執行 | 讀取檔案內容、搜尋程式碼 |
| 寫入操作 | 需要確認 | 修改檔案、建立新檔案 |
| 執行 Shell 指令 | 需要確認 | 跑終端機指令、安裝套件 |
換句話說,只要 Claude Code 想要「改東西」或「執行終端機指令」,它都會先讓你看一眼、點頭了才做。這個機制就是在保護你——即使 AI 判斷錯誤,你還有最後一道防線可以擋下來。關於權限機制的完整介紹,可以參考 Claude Code 入門使用教學 的權限章節。
但問題來了:如果你看不懂那行指令在做什麼,這道防線等於是虛設的。所以接下來,我們要先學會怎麼「讀」一行指令。
三分鐘看懂一行指令
指令的基本結構
終端機指令看起來很嚇人,但其實大部分都遵循一個固定的結構,就像英文的「主詞 + 動詞 + 受詞」一樣:
# 指令的基本結構
程式名稱 選項(flags) 目標
# 實際範例
ls -la src/
# ↑ ↑ ↑
# 程式名稱 選項 目標
# (列出檔案) (詳細格式) (src 資料夾)
拆開來看:
| 部分 | 說明 | 範例 |
|---|---|---|
| 程式名稱 | 你要執行的工具,決定「做什麼事」 | ls(列出檔案)、rm(刪除)、git(版本控制) |
| 選項(flags) | 用 - 或 -- 開頭,調整行為細節 | -l(詳細模式)、--force(強制執行) |
| 目標 | 你要對什麼東西操作 | src/(某個資料夾)、package.json(某個檔案) |
所以當你看到 Claude Code 要執行 cat package.json,你可以拆解成:cat(顯示檔案內容)+ package.json(目標檔案)= 它只是要看一下這個檔案的內容。如果你想更深入了解指令的基本原理和路徑操作,非常推薦可以參考之前寫的:常用 Linux 指令教學,在 macOS 上這些指令都是通用的,甚至在 Windows CMD、PowerShell 中也大多通用。
常見符號速查表
除了基本結構之外,指令裡面有一些符號也很常出現,新手第一次看到通常會一頭霧水。這邊整理一張表,以後看到直接對照就好:
| 符號 | 名稱 | 功能 | 範例 |
|---|---|---|---|
| | Pipe(管線) | 把前一個指令的結果傳給下一個指令處理 | cat file.txt | grep "error"(顯示檔案內容,再從中找 error) |
> | 輸出重導向 | 把結果寫入檔案(覆蓋原有內容) | echo "hello" > file.txt(把 hello 寫進檔案,原內容會消失) |
>> | 附加重導向 | 把結果附加到檔案尾端(不覆蓋) | echo "world" >> file.txt(在檔案尾端加上 world) |
&& | 串接執行 | 前一個指令成功後,才執行下一個 | mkdir build && cd build(建立資料夾成功後,進入該資料夾) |
; | 分號 | 不管前一個指令成功與否,都執行下一個 | command1 ; command2 |
sudo | 超級使用者 | 用管理員權限執行指令(通常需要輸入密碼) | sudo apt install nano(用管理員權限安裝軟體) |
~ | Home 目錄 | 代表你的使用者主目錄 | cd ~/Documents(切換到你的文件資料夾) |
* | 萬用字元 | 匹配任何文字 | rm *.tmp(刪除所有 .tmp 檔案) |
這些符號裡面,需要特別注意的是 >(覆蓋寫入)和 sudo(管理員權限)。看到這兩個出現在指令裡面的時候,要多花幾秒鐘確認一下目標是不是合理的。
Claude Code 常見指令分類
了解了指令的基本結構之後,接下來把 Claude Code 最常執行的指令分成幾大類。你不需要記住每個指令的細節,只要看到指令的時候,能大概判斷「它屬於哪一類、風險高不高」就夠了。
讀取類——只是看看,不會改東西
這類指令只會「讀取」資訊,不會修改、刪除或建立任何檔案,風險最低。
| 指令 | 功能 | 範例 |
|---|---|---|
ls | 列出資料夾裡的檔案 | ls -la src/ |
cat | 顯示檔案完整內容 | cat package.json |
head / tail | 顯示檔案開頭 / 結尾幾行 | head -20 README.md |
find | 搜尋檔案位置 | find . -name "*.js" |
grep | 在檔案內容中搜尋文字 | grep -r "TODO" src/ |
wc | 計算行數、字數、字元數 | wc -l *.py |
pwd | 顯示目前所在資料夾 | pwd |
file | 辨識檔案類型 | file image.png |
看到這些指令出現的時候,基本上可以放心讓它執行。Claude Code 經常會先用這類指令了解你的專案結構,再決定怎麼幫你做事。
寫入類——會修改或建立檔案
這類指令會在你的檔案系統上「寫東西」,不管是新建檔案、複製檔案、還是移動檔案。風險比讀取類高一點,但通常影響範圍有限。
| 指令 | 功能 | 需要注意什麼 |
|---|---|---|
mkdir | 建立新資料夾 | 通常無害,只是多一個資料夾 |
touch | 建立空白檔案 | 同上,只是多一個空檔案 |
cp | 複製檔案或資料夾 | 注意目標位置,會不會覆蓋同名檔案 |
mv | 移動或重新命名檔案 | 注意目標位置,原位置的檔案會消失 |
echo "..." > file | 把文字寫入檔案 | 注意 > 會覆蓋原有內容,>> 是附加 |
tee | 同時顯示輸出並寫入檔案 | 跟 > 類似,會寫入檔案 |
這類指令的關鍵是看目標路徑。如果目標是在你的專案資料夾裡面(比如 ./src/、./dist/),那通常沒問題。但如果目標路徑跑到系統目錄去了(比如 /etc/、/usr/),那就要警覺了。
刪除類——移除檔案或資料夾
刪除指令獨立出來講,因為這是新手最該注意的一類。終端機裡刪除的東西不會進到垃圾桶,是直接消失的。
| 指令 | 功能 | 危險程度 |
|---|---|---|
rm file.txt | 刪除單一檔案 | 低——刪一個檔案,影響明確 |
rm -r folder/ | 刪除資料夾和裡面所有東西 | 中——會遞迴刪除,注意目標路徑 |
rm -rf folder/ | 強制刪除,不詢問確認 | 高——不會問你「確定嗎?」直接刪 |
rm -rf * | 刪除目前資料夾下所有東西 | 非常高——取決於你目前在哪個資料夾 |
這裡面的 -r 代表 recursive(遞迴),意思是「連子資料夾和裡面的東西一起刪」。-f 代表 force(強制),意思是「不要問我確定不確定,直接刪」。兩個加在一起就是 -rf,效果是「把目標資料夾和裡面的所有東西,不問直接全部刪掉」。
但不要看到 rm -rf 就恐慌——關鍵還是看目標是什麼。rm -rf node_modules(刪除 Node.js 的套件快取資料夾)是非常常見的正常操作,因為 node_modules 隨時可以用 npm install 重新下載回來。但如果看到 rm -rf / 或 rm -rf ~,那就絕對要擋下來。
安裝與套件管理類
Claude Code 在幫你做事的時候,可能會需要安裝一些工具或套件。這類指令會在你的系統上下載並安裝軟體。
| 指令 | 適用環境 | 範例 |
|---|---|---|
npm install | Node.js 套件 | npm install express |
pip install | Python 套件 | pip install pandas |
brew install | macOS 系統軟體 | brew install jq |
apt install | Ubuntu / Debian 系統軟體 | sudo apt install curl |
這類指令的風險在於:你安裝的東西是否來自可信的來源。像 npm install express(安裝知名的 Node.js 框架)是很安全的。但如果安裝的是你從來沒聽過的套件,可以先 Google 一下這個套件名稱,看看它是不是正規的開源專案。另外,npm install(不指定套件名稱)代表的是「安裝 package.json 裡列出的所有套件」,這是專案初始化時的標準操作,通常是安全的。
Git 版本控制類
Claude Code 操作 Git 非常頻繁。Git 是程式碼的版本控制工具,你可以把它想像成「程式碼的時光機」。大部分 Git 指令都是安全的,但有少數幾個破壞性操作需要注意。
| 指令 | 功能 | 風險 |
|---|---|---|
git status | 查看目前的修改狀態 | 無——只是看看 |
git add | 把修改加入暫存區 | 無——只是標記要提交哪些修改 |
git commit | 建立一個版本紀錄 | 低——只是記錄變更,可以撤銷 |
git diff | 查看修改了什麼內容 | 無——只是看看 |
git log | 查看提交歷史 | 無——只是看看 |
git push | 把本地的提交推到遠端 | 中——會影響到遠端儲存庫,別人看得到 |
git push --force | 強制推送,覆蓋遠端歷史 | 高——會覆蓋遠端的提交紀錄 |
git reset --hard | 丟棄所有未提交的修改 | 高——未儲存的修改會永久消失 |
git checkout -- . | 丟棄所有未暫存的修改 | 高——修改會永久消失 |
簡單來說,git status、git add、git commit、git diff、git log 這些都是非常安全的日常操作。需要特別注意的是帶有 --force 或 --hard 字眼的指令,這些通常意味著「強制執行、不可撤銷」。
網路類——會連線到外部
這類指令會讓你的電腦跟外部網路互動,可能是下載東西、也可能是上傳東西。
| 指令 | 功能 | 需要注意什麼 |
|---|---|---|
curl | 從網址下載內容 | 看目標網址是否可信 |
wget | 從網址下載檔案 | 同上 |
curl ... | bash | 下載腳本並直接執行 | 高風險——等於讓遠端程式碼在你電腦上跑 |
npm publish | 把套件發佈到 npm 公開平台 | 高風險——你的程式碼會被上傳到公開平台 |
git push | 把程式碼推到遠端儲存庫 | 確認推送的目標是你自己的 repo |
scp / rsync | 在本機和遠端之間複製檔案 | 確認目標位置和傳輸方向 |
這裡面最需要警覺的是 curl ... | bash(或 curl ... | sh)。這個寫法的意思是「從某個網址下載一段程式碼,然後直接執行它」。雖然很多正規軟體的安裝腳本也用這種方式(比如 Homebrew 的安裝指令),但如果網址是你不認識的,就有風險。
系統權限類——動到系統層級
這類指令會影響到作業系統層級的設定或權限,是風險最高的類別。
| 指令 | 功能 | 為什麼要注意 |
|---|---|---|
sudo ... | 用管理員(root)權限執行指令 | 幾乎可以做任何事,包括破壞系統 |
chmod | 修改檔案權限 | chmod 777 會讓任何人都能讀寫執行該檔案 |
chown | 修改檔案擁有者 | 可能影響其他程式的存取權限 |
一般來說,Claude Code 在正常的專案開發中很少需要用到 sudo。如果它突然要求用 sudo 執行某個指令,你應該先問它為什麼需要管理員權限,是不是有其他不需要 sudo 的替代方案。
紅燈、黃燈、綠燈——指令安全判斷法
前面分了七大類指令,資訊量有點大。這邊把所有東西濃縮成一套簡單的「紅綠燈判斷法」,以後看到任何指令,跑一次這個流程就能快速決定要 Allow 還是 Deny。
綠燈——通常可以放心 Allow
符合以下所有條件的指令,通常可以直接 Allow:
- 只讀操作(只是看、搜尋、列出資訊)
- 目標在你的專案資料夾內
- 不牽涉外部網路連線
- 不需要
sudo
常見的綠燈指令範例:
# 列出專案資料夾結構
ls -la src/
# 搜尋程式碼中包含 "error" 的地方
grep -r "error" src/
# 顯示某個檔案的內容
cat README.md
# 計算程式碼行數
wc -l src/*.js
# 查看目前的 Git 狀態
git status
# 查看檔案的修改差異
git diff
# 查看最近的 Git 提交紀錄
git log --oneline -10
黃燈——先看清楚再決定
符合以下任一條件的指令,建議多看一眼:
- 會寫入或修改檔案,但範圍明確
- 會刪除東西,但目標是可重建的(如
node_modules、dist/、build/) - 安裝知名的套件或工具
- Git 操作(
add、commit、push)
黃燈指令的判斷要點:
- 看目標路徑:是在專案資料夾內嗎?還是跑到系統目錄了?
- 看影響範圍:刪除的是可重建的快取?還是你辛苦寫的程式碼?
- 看安裝來源:套件名稱你認識嗎?Google 得到嗎?
常見的黃燈指令範例:
# 建立新的資料夾結構——看一下路徑是否合理
mkdir -p src/components/Button
# 安裝 Node.js 套件——express 是知名框架,沒問題
npm install express
# 刪除 node_modules 再重新安裝——常見操作,安全
rm -rf node_modules && npm install
# 把修改加入 Git 暫存區並提交——確認 commit message 合理就好
git add -A && git commit -m "fix: 修正登入驗證邏輯"
# 複製檔案——看一下目標路徑
cp .env.example .env
# 安裝 Python 套件——pandas 是知名資料分析套件
pip install pandas
紅燈——務必停下來確認
符合以下任一條件的指令,建議先按 Deny,問清楚再說:
rm -rf搭配廣泛路徑(/、~、*)sudo開頭的任何指令(除非你明確知道為什麼需要)curl ... | bash或wget ... | sh(從網路下載直接執行)chmod 777(把檔案權限開到最大)- 目標指向系統目錄(
/etc/、/usr/、/System/) git push --force(強制覆蓋遠端歷史)git reset --hard(丟棄所有未提交修改)- 你完全看不懂的指令
逐一說明這些為什麼危險:
# ❌ 刪除整個系統——這會毀掉整台電腦的所有資料
sudo rm -rf /
# ❌ 刪除整個家目錄——你的文件、照片、設定全部消失
rm -rf ~
# ❌ 從不明網址下載腳本直接執行——等於把電腦控制權交給別人
curl -fsSL https://unknown-site.com/script.sh | bash
# ❌ 把根目錄權限全開——任何人都可以讀寫你的所有檔案
sudo chmod -R 777 /
# ❌ 強制推送到 main 分支——會覆蓋團隊其他人的所有提交
git push --force origin main
# ❌ 硬重置——所有還沒 commit 的修改會永久消失
git reset --hard HEAD
# ❌ 覆蓋系統設定檔——可能讓系統無法正常運作
echo "something" > /etc/hosts
最後一條特別重要:如果你完全看不懂這行指令在做什麼,就先按 Deny。按 Deny 不會有任何壞處,你可以問 Claude Code「這個指令是做什麼用的?可以解釋一下嗎?」它會用白話告訴你,然後你再決定要不要允許。
實戰演練——看到這些指令你會怎麼判斷
理論講完了,來做幾題練習。以下模擬 Claude Code 實際會跳出的指令確認畫面,試著用紅綠燈判斷法來分析每一個。
案例一
ls -la src/components/
拆解:ls(列出檔案)+ -la(詳細格式,含隱藏檔)+ src/components/(專案內的資料夾)
判斷:🟢 綠燈。只是查看專案資料夾內容,完全不會改任何東西。直接 Allow。
案例二
npm install express mongoose dotenv
拆解:npm install(安裝 Node.js 套件)+ 三個套件名稱
判斷:🟡 黃燈。會安裝套件到你的專案,但 express(Web 框架)、mongoose(MongoDB 工具)、dotenv(環境變數管理)都是非常知名的套件。確認這些是你的專案需要的就可以 Allow。
案例三
rm -rf node_modules && npm install
拆解:rm -rf node_modules(強制刪除 node_modules 資料夾)+ &&(成功後接著)+ npm install(重新安裝所有套件)
判斷:🟡 黃燈。看到 rm -rf 可能會嚇一跳,但 node_modules 是 Node.js 套件的快取資料夾,隨時可以重建。「刪掉再重裝」是解決套件衝突的標準做法,非常常見。可以 Allow。
案例四
git add -A && git commit -m "feat: 新增使用者註冊功能"
拆解:git add -A(把所有修改加入暫存區)+ git commit -m "..."(建立一個版本紀錄,附上說明訊息)
判斷:🟡 黃燈。這是標準的 Git 提交操作,只是在本地建立版本紀錄,不會推到遠端。看一下 commit message 描述的內容是否跟你請 Claude Code 做的事情一致就好。Allow。
案例五
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
拆解:curl -fsSL(從網址下載內容)+ |(傳給下一個指令)+ sudo bash -(用管理員權限執行下載的腳本)
判斷:🔴 紅燈。這是 curl | bash 的模式——從網路下載腳本直接用管理員權限執行。雖然 deb.nodesource.com 是 NodeSource 官方的 Node.js 安裝腳本,來源可信,但建議你先確認這個網址是否正確,再考慮是否 Allow。如果不確定,可以先 Deny,然後問 Claude Code「有沒有不用 curl | bash 的安裝方式」。
案例六
git push --force origin main
拆解:git push(推送到遠端)+ --force(強制覆蓋)+ origin main(遠端的主分支)
判斷:🔴 紅燈。--force 會覆蓋遠端儲存庫上的提交歷史。如果有其他人也在這個 repo 上工作,他們的提交可能會被覆蓋掉。除非你非常確定自己在做什麼,否則一定要 Deny,然後問 Claude Code 為什麼需要 force push。
案例七
python3 -c "import json; data=json.load(open('data.json')); print(len(data))"
拆解:python3 -c "..."(用 Python 執行一段程式碼)。程式碼內容是:讀取 data.json 檔案,計算裡面有幾筆資料。
判斷:🟢 綠燈。雖然用了 python3 -c 執行程式碼看起來有點複雜,但仔細看內容只是讀取一個 JSON 檔案並印出長度,完全是唯讀操作。Claude Code 很常用這種方式做資料分析。Allow。
Claude Code 的安全機制幫你把關了什麼
除了你自己的判斷之外,Claude Code 本身也有一套安全機制在幫你把關。了解這些機制可以讓你更有信心地使用它。
三層權限架構:
- 唯讀操作自動執行:讀取檔案、搜尋內容這類不會改任何東西的操作,Claude Code 會直接做,不需要你確認。
- 寫入操作需要確認:修改檔案或建立新檔案時,Claude Code 會先顯示修改內容的 diff(差異對比),讓你看過後再決定。
- Shell 指令需要確認:執行終端機指令時,Claude Code 會顯示完整的指令內容,等你按 Allow 才會執行。
Always Allow 功能:
如果你在某個專案中經常使用同一類操作(例如反覆地 npm install),可以在確認時選擇 Always allow(就是前面提到的「Yes, allow … from this project」那個選項),之後同類型的操作就不會再問你。但要注意:
- 建議只對你很確定安全的操作使用 Always allow
- 不同專案的 Always allow 設定是獨立的
- 如果想重新調整,可以用
/permissions指令管理你的權限設定
如何撤銷已經給出的許可:
如果你之前不小心對某個操作選了 Always allow,想要收回來,操作方式很簡單:
- 在 Claude Code 中輸入
/permissions - 你會看到目前所有已經自動允許的操作清單
- 找到你想撤銷的項目,把它移除就可以了
- 之後同類型的操作會重新回到「每次詢問」的狀態
所以即使一時手快選了 Always allow,也不用擔心,隨時都可以撤銷。
最後防線是你自己:
這些機制很好,但它們只是工具,最終的判斷還是在你手上。Claude Code 不會繞過你的確認去做事,所以只要你養成「看不懂就先 Deny」的習慣,就不用擔心會出大問題。
給新手的行動建議
什麼時候可以大膽 Allow
- 讀取類指令(
ls、cat、grep、find等) - 操作對象在你的專案資料夾內
- 你看得懂這個指令在做什麼,而且跟你的要求相符
- Git 的查看類操作(
status、diff、log)
什麼時候該按 Deny 問清楚
- 你完全看不懂這行指令
- 指令裡面有
sudo - 指令操作的路徑不在你的專案資料夾裡
- 指令裡面有
--force或--hard - 指令會上傳東西到網路上(
push、publish) - 你心裡有任何猶豫
記住:按 Deny 永遠不會有壞處。最多就是 Claude Code 需要換個方式做同一件事。但如果你按了 Allow 讓一個危險指令執行了,那可能就真的回不來了。所以寧可多問一次,也不要少問一次。
實用小技巧
1. 看不懂就直接問 Claude Code
按 Deny 之後,你可以直接在對話中問它:「你剛才那個指令是要做什麼?可以用白話解釋一下嗎?」Claude Code 會詳細說明每個部分的用途。這是最方便的方式,因為你不用離開 Claude Code 就能得到解答。
2. 善用 /permissions 管理權限
在 Claude Code 中輸入 /permissions,可以查看和管理你已經設定的 Always allow 清單。如果之前不小心對某個操作設了 Always allow 想要取消,在這裡就可以調整。
3. 注意指令的「目標路徑」
很多時候,同一個指令危不危險取決於它操作的目標。rm -rf node_modules 是正常操作,但 rm -rf / 是災難。養成習慣看一下指令最後面的路徑或檔名,確認它操作的對象是你預期的。
4. 善用 Google 或 AI 查詢
如果你想確認某個指令是否安全,可以把指令複製起來,貼到 Google 或 ChatGPT 去問。搜尋 linux rm -rf 意思 或直接貼整行指令問「這個指令在做什麼?安全嗎?」都是好方法。
總結
終端機指令一開始看起來確實很嚇人,但拆開來看,每一行指令都只是「程式名稱 + 選項 + 目標」的組合。學會辨認幾個關鍵的程式名稱(ls、rm、git、sudo),知道幾個重要的符號(|、>、&&),再用紅黃綠燈判斷法跑一遍,你就能在 Claude Code 跳出確認畫面的時候,有信心地做出正確的選擇。最重要的原則只有一個:不確定就先 Deny,問清楚再決定。Claude Code 不會因為你按了 Deny 就生氣或壞掉,它只會換個方式繼續幫你做事。放輕鬆,慢慢來,用多了自然就會越來越熟悉。如果你還沒讀過 Claude Code 的基礎教學,建議搭配 Claude Code 入門使用教學和非工程師應用教學一起閱讀,會更完整。