Skip to content

加入 Agent Mode 的 autoApprove 設定說明 #46

@doggy8088

Description

@doggy8088

目前 GitHub Copilot 有 4 個與 autoApprove 有關的設定:

  1. chat.tools.edits.autoApprove

    控制是否自動批准聊天所做的編輯。預設情況下,所有編輯都會被批准,除了那些對特定文件做出的改動,這些改動可能會導致立即的非預期副作用,例如 **/.vscode/*.json。

    建議維持預設值就好,不用額外調整。

  2. chat.tools.terminal.enableAutoApprove

    控制是否允許在終端工具中自動批准執行。

    這個設定預設就是啟用的,並且會搭配 chat.tools.terminal.autoApprove 設定一起運作,只有在清單中被允許的命令才能自動核准。

  3. chat.tools.terminal.autoApprove

    一個命令或正則表達式的列表,用來控制在終端工具命令中執行是否需要顯式批准。這些將與命令的開始部分進行匹配。可以透過將字符串封裝在 / 字符中,並可以選擇性地加上如 i 表示不區分大小寫標誌,來提供正則表達式。

    設置為 true 會自動批准命令,false 則總是要求顯式批准,或設為 null 來解除設定值。

    注意,這些命令和正則表達式會在完整的命令行中的每個子命令被評估,例如 foo && bar 需要 foo 和 bar 都匹配 true 項且不能匹配 false 項以自動批准。內嵌命令如 $(foo)(命令替換)或 <(foo)(進程替換)目前被默認的廣泛規則屏蔽住這些模式。

    可以使用一個物件來匹配完整的命令行而不是匹配子命令和內嵌命令,例如 { approve: false, matchCommandLine: true }。為了自動批准,子命令和命令行必須都沒有被顯式拒絕,然後需不論是所有子命令還是命令行都要被批准。

    這個組態會有一份預設隨著 VS Code 一起發佈的清單,第一次設定的時候會自動被填入 settings.json

  4. chat.tools.global.autoApprove

    全域自動核准(也稱為"YOLO模式")完全停用所有工作區中所有工具的手動核准,允許代理完全自主行動。這是極其危險的,絕不建議使用,即使是如Codespaces和Dev Containers這樣的容器化環境,使用者金鑰也會轉發到容器中,可能會被入侵。

    此功能會停用關鍵的安全防護,並使攻擊者更容易侵入機器。

    注意: 當你在 Remote WSL 環境,從 User 的設定會找不到該選項,要到 Remote 的設定才找的到此選項。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions