npx -y cc-safety-net@latest install --opencode を実行すると、OpenCode 自身のプラグインコマンドで cc-safety-net@latest プラグインがインストールされ、OpenCode がそれを読み込んだかも確認されます。その後、OpenCode を再起動してください。CC Safety Net は、同じ npm パッケージで OpenCode 1.18.29+ と 2.0.6+ に対応しています。
OpenCode に CC Safety Net をインストールする
1
OpenCode のバージョンを確認する
OpenCode 1.18.29+ または 2.0.6+ を使っていることを確認します。それより古いリリースの場合は、CC Safety Net を更新する前に OpenCode をアップグレードしてください。
2
インストーラーを実行する
3
OpenCode を再起動する
OpenCode を再起動します。更新の後も同様に再起動してください。
4
プラグインが有効か確認する
OpenCode のインストールで変わること
- OpenCode 1.x では、OpenCode がキャッシュしているパッケージを削除してから、
opencode plugin -g -f cc-safety-net@latestを実行します。 - OpenCode 2.x では、
opencode plugin add cc-safety-net@latestを実行します。プラグインがすでに設定済みの場合はopencode plugin updateを実行します。
OpenCode の設定の場所
OpenCode の設定ディレクトリは、次のうち最初に当てはまるものです。OPENCODE_CONFIG_DIR(設定されていて空でない場合)。$XDG_CONFIG_HOME/opencode(XDG_CONFIG_HOMEが設定されている場合)。~/.config/opencode。
opencode.json または opencode.jsonc です。OPENCODE_CONFIG_DIR が設定されている場合、OpenCode 2.x はそのディレクトリだけを読みますが、OpenCode 1.x は XDG のディレクトリも読み込みます。
OpenCode のプラグインが検査する内容
OpenCode は CC Safety Net をプロセス内のプラグインとして読み込みます。コマンドとして検査するツールは、OpenCode 1.x ではbash、2.x では shell です。read、edit、write、patch、grep、glob などのその他のツールは、パスとシークレットの保護でチェックします。
OpenCode 2.x でシェルの方言を設定する
OpenCode 2.x は、コマンドを実行するシェルをプラグインに伝えません。そのため、アナライザーの方言はプラグインのshell オプションで選びます。既定は Windows では powershell、それ以外では posix です。Unix で PowerShell を使う場合や、Windows で Git Bash を使う場合は、設定のエントリで指定してください。
sh 構文を実行するシェルには "posix" を、powershell と pwsh には "powershell" を指定します。このオプションで OpenCode が使うシェルが変わるわけではなく、OpenCode が使うシェルに合わせる必要があります。それ以外の値を指定すると、プラグインは CC Safety Net: plugin option shell must be posix or powershell. で失敗します。
OpenCode がシェルを起動する前に、プラグインは実行ファイルがこのオプションと一致するか確認します。fish、nushell、tcsh など POSIX の sh 構文を実行しないシェルは、"posix" の確認に通りません。確認に失敗すると、シェルは起動しません。
OpenCode のチェックが失敗したときの動作
CC Safety Net のプラグインが例外を投げた場合、OpenCode は呼び出しをブロックします。OpenCode にはプラグインのフックのタイムアウトがないため、チェックが止まると呼び出しは待たされたままになります。プラグインの読み込みに失敗した場合、OpenCode はプラグインなしで起動し、ツールはチェックされずに実行されます。2.x では、正常に動作していた以前のコピーが有効な状態で再読み込みに失敗した場合、そのコピーが引き続き呼び出しを検査します。OpenCode での保護範囲の制限
Windows の OpenCode 1.x は、POSIX シェルを実行するときに、/tmp のような POSIX のルートから始まる workdir を cygpath -w で変換します。一方、CC Safety Net は同じ workdir を現在のドライブを基準に C:\tmp と解決します。そのため、このような呼び出しでは、実際に実行されるディレクトリとは別のディレクトリを基準に検査することがあります。
OpenCode から CC Safety Net をアンインストールする
opencode.json と opencode.jsonc から cc-safety-net のエントリを削除します。JSONC のコメントはそのまま残ります。キャッシュされたパッケージも削除します。
OpenCode のトラブルシューティング
OpenCode 2.x では、
doctor を実行したディレクトリでプラグインが有効化されたかどうかも、doctor が OpenCode に問い合わせます。有効化されていない場合は、Error (OpenCode): OpenCode reports cc-safety-net failed: <the host's first error line> と表示します。