Go のバージョン固定は go.mod/go.work の toolchain ディレクティブで行う
Go
開発環境
ツール
Go プロジェクトで使用 Go バージョンを固定したいとき、リポジトリにバージョンマネージャ設定ファイル(mise.toml 等)をコミットすると、その設定を「信頼」していない環境で go 実行のたびにツールがエラーを出し、go コマンドごと失敗することがある。具体的には、エディタの LSP が裏で走らせる go list、CI、他の開発者のマシンなどで「untrusted config」エラーになり、補完やビルドが壊れる。
判断基準
- バージョン固定は go.mod / go.work の
toolchain goX.Y.Zディレクティブ(必要ならgo goX.Y.Zも)で行うのが移植性が高い。GOTOOLCHAIN=auto(既定)なら必要なツールチェーンを自動取得し、CI・コンテナ・エディタすべてが追従する。各環境での信頼操作も不要。 - バージョンマネージャ設定をコミットするなら、全環境で信頼操作が必要になる前提を理解し、それが LSP/CI を壊さないか確認する。壊すなら toolchain ディレクティブへ一本化する。
補足
- 標準ライブラリの脆弱性などはツールチェーンのバージョンを上げて再ビルドすれば解消できる。go.mod の go/toolchain を上げれば全ビルド経路がそのバージョン以上を使う。
検証方法
バージョンファイルを置かず toolchain ディレクティブだけにして go build / go list が当該バージョンで通ること、脆弱性スキャナが解消を示すことを確認する。