メインコンテンツへスキップ

ローカルコマンドを安全に実行する

デスクトップアプリでは、アシスタントがチャットの作業フォルダーでコマンドやテストを実行できます。チャットでの使い方はローカルファイルアクセスで説明しています。このページでは、確認なしで実行してよい場合と、コマンドをどの程度隔離して実行するかを設定します。

コマンド設定を開く​

チャットでコマンドパネルを開き、このフォルダーのコマンド設定を選びます。設定はフォルダーごとに適用されます。

アシスタントがコマンドを実行できるのはいつですか?​

次の3つのモードから1つを選びます。

  • 毎回確認する:すべてのコマンドをあなたが承認します。
  • 信頼済みコマンドは自動:保存したコマンドは確認なしで開始します。ほかのコマンドは引き続き承認を求めます。
  • サンドボックスで自動実行:すべて確認なしで開始しますが、隔離された環境で実行されます。

どのモードでも、次のルールも適用されます。

  • 無害なコマンドはカードなしで開始します:mkdir, ls, cat, head, tail, wc, grep, find(-exec や -delete なし)、touch, pwd, tree、およびバージョン確認(node、npm、npx、python、pip、aischool-python の --version、-v、-V)です。これらは、組み込みのファイルツールが確認なしで行っていること以上のことはしません。サンドボックス内でネットワークなしに実行され、作業フォルダー内のパスだけを使います。リンクをたどった後も同じです(絶対パス、~、.. は不可)。リンクがフォルダーの外を指している場合は、カードが表示されます。これにはサンドボックス(macOS と Linux)とローカルコマンドが必要ですが、管理者の 自動実行を許可 は必要ありません。このとき コマンド パネルには 自動(無害なコマンド) と表示されます。 mkdir -p src/{components,utils} のような波かっこのリストもカードなしで開始されます。アプリはそれを個別のパスに展開し、すべてを確認します。
  • どのカードにも、正確なコマンドと、オンライン操作の場合は正確なアドレスが表示されます。その下に、アシスタントの説明が小さく表示されます。
  • サンドボックスが利用でき、管理者が自動実行を許可している場合、サンドボックスで実行されるコマンドのカードには 今後このフォルダーではサンドボックス内で自動実行 ボタンも表示されます。このボタンでフォルダーが サンドボックスで自動実行 に切り替わり、以降のコマンドはカードなしで開始します。ネットワークが必要なコマンドは、パッケージのインストールが許可されている場合を除き、引き続き一度だけ確認します。
  • フォルダー内で、サンドボックスで実行されネットワークを求めない最初のカードに、一度だけ このプロジェクトを信頼する が表示されます。このボタンはコマンドを実行し、フォルダーを サンドボックスで自動実行 に切り替え、確認なしでパッケージのインストールを許可 をオンにします。その後、npm test、npm run build、node --test などのテストやビルドは、ネットワークなしのサンドボックス内でカードなしで開始されます。ほかの目的でネットワークが必要なコマンドや、サンドボックス外で実行されるコマンドは引き続き確認を求めます。実行 または 拒否 を選ぶと、このフォルダーでこの質問は再表示されません。モードはコマンド設定で変更できます。自動実行がオフの場合は、管理者によるものか、このコンピューターのデバイスポリシーによるものかが各カードに表示されます。

信頼済みコマンドを保存する​

コマンドでこのフォルダーで常に許可を選び、次にこのコマンドのみまたはこれで始まるすべてを選びます。保存したコマンドは、以後確認なしで開始します。特殊文字(; | > $ など)を含むコマンドは、常に承認を求めます。

保存したルールは、コマンド設定のこのフォルダーで常に許可に一覧表示されます。そこから削除することもできます。

サンドボックスとネットワーク​

  • サンドボックスを使用:コマンドはこのフォルダー内にしか書き込めません。macOS と Linux では、このオプションは初期設定でオンです。
  • ネットワークを許可:コマンドがインターネットにアクセスできるかどうかを決めます。このオプションは初期設定でオフです。サンドボックスを使わない場合、コマンドは常にネットワークにアクセスできます。

各コマンドカードには、サンドボックスとネットワークがオンかどうかが表示されます。

ネットワークを許可がオフのときに、アシスタントが何かをダウンロードしようとすると(たとえば npm install)、そのコマンドだけをネットワーク付きで実行するかどうかをコマンドカードが確認します。そのため、フォルダー全体でネットワークをオンにする必要はありません。

Windows

Windows では、サンドボックスはまだ利用できません。

パッケージのインストール​

アプリには Node.js と npm が組み込まれています。そのため、コンピューターに Node.js がインストールされていなくても、node、npm、npx などのコマンドが使えます。Node.js を自分でインストールしている場合は、アプリはそのバージョンを使います。例外:Electron を自分で起動するプロジェクト(electron .)には、自分でインストールした Node.js が必要です。

確認なしでパッケージのインストールを許可​

このフォルダーのコマンド設定で、確認なしでパッケージのインストールを許可スイッチをオンにします。すると、名前を指定したパッケージのインストールがカードなしで開始します。npm install <名前> と package.json からの npm install、install または add を使う pnpm、yarn、bun、そして pip install <名前>(uv 経由も含む)です。これらは常にサンドボックス内で、ネットワーク付きで実行されます。その他のコマンドは、フォルダーに選んだモードに従います。

次のインストールでは、引き続きカードが表示されます。

  • npm create vite@latest や npx create-… などのプロジェクト作成ツール。独自のコードを実行するためです。
  • pip install .、pip install -r requirements.txt、別のレジストリからのインストール(--registry、-i、--index-url)、および git アドレス、URL、パスからのパッケージ。

このスイッチは、サンドボックスがあり(macOS と Linux)、管理者が自動実行を許可している場合にのみ機能します。それ以外の場合はオンにできません。

インストールスクリプトなし

この方法でインストールされるパッケージが、独自のインストールスクリプトを実行することはありません(npm は --ignore-scripts 付きで実行されます)。Python パッケージは、ビルド済みの wheel としてのみインストールされます。

ローカルサーバーと内蔵ブラウザ​

アシスタントは、動き続ける開発サーバーを起動することもできます。たとえば、Vite を使った小さな React プロジェクトの npm run dev です。ほかのコマンドと同じルールが適用されます。正確なコマンドを承認するか、保存したルールまたはサンドボックスでの自動実行によって起動します。カードには最大実行時間の代わりに「停止するまでローカルサーバーとして動き続けます。」と表示されます。

サーバーはアシスタントの回答後も動き続けます。コマンドパネルのカードにはサーバー実行中の状態と、ブラウザで開くおよび停止ボタンが表示されます。同時に実行できるサーバーは最大 4 つです。サーバーは、停止したときかアプリを終了したときに止まります。

ネットワークなしのサンドボックスでは、サーバーはこのコンピューター(localhost)でのみ待ち受けできます。アシスタントがパッケージをインストールする方法は、パッケージのインストールをご覧ください。

シンプルな Web ページを表示する​

通常の Web ページ(CSS と JavaScript を含む index.html で、ビルド手順のないもの)には、コマンドは必要ありません。アシスタントはアプリに内蔵された Web サーバーを使います。

  • フォルダーはこのコンピューターでのみ、ランダムなポートの http://127.0.0.1 で表示されます。
  • .git や .env などの隠しファイルは表示されません。
  • ファイルが変更されると、ページが自動的に再読み込みされます。

この場合、承認カードは表示されません。サーバーはコマンドパネルにブラウザで開くと停止付きで表示され、最大 4 つのサーバーの上限に数えられます。

結果は内蔵ブラウザで確認します。上部バー右側のブラウザボタン(地球のアイコン)です。パネルはチャットの横に開き、戻る、進む、再読み込み(読み込み中は停止)、アドレスバー、既定のブラウザで開くがあります。

  • アシスタントは、ローカルサーバーの結果を見せるために自分でブラウザを開きます。これは http://localhost:5173 のようなローカルアドレスでのみ機能します。
  • 回答内の localhost リンクをクリックすると、内蔵ブラウザで開きます。ほかのリンクは既定のブラウザで開きます。
  • 任意の Web アドレスを自分で入力することもできます。
  • ブラウザには独立した専用のセッションがあります。そこでは AI-Public にログインしておらず、Web サイトにはカメラやマイクなどの権限が与えられず、ダウンロードもできません。
  • アプリのメニューやダイアログが開いている間は、ページが一時的に非表示になります。

例:

このフォルダーに、Vite を使ってカウンター付きの小さな React アプリを作成して。依存関係をインストールし、開発サーバーを起動して、結果をブラウザで見せて。

アシスタントにページを見てもらう​

内蔵ブラウザーのページを見るよう頼むと、アシスタントはページのアドレス、タイトル、表示されているテキスト、スクリーンショット、最新のエラーメッセージを読み取ります。これらは AI モデルに送られます。

  • このコンピューター上のページ(localhost または 127.0.0.1)は、確認なしで見ます。
  • それ以外のウェブサイト(ログインしているページなど)では、まずカードが表示されます:「アシスタントが onedrive.live.com を見ようとしています。」表示を許可 または 拒否 をクリックします。毎回確認されます。
  • 許可した後にページが別のウェブサイトに移った場合、アシスタントは何も読み取りません。
  • アシスタントが自分でクリックや入力をするのは、作ったものをテストするための、このコンピューター上のページだけです。ほかのウェブサイトではクリック、入力、移動をせず、Cookie やパスワードも受け取りません。
  • オフラインモードでは、このコンピューター上のページだけを見ます。

バージョンと GitHub​

アシスタントには git が内蔵されています。そのため、Windows でも git をインストールする必要はありません。アシスタントは、バージョンの保存、変更内容の表示、ブランチの作成、プロジェクトのオンライン公開ができます。

  • バージョンの保存など、このフォルダー内の操作は確認なしで開始します。秘密情報らしきファイル(.env ファイルや、コード内のキーやトークン、AIza で始まる Google API キーなど)がバージョンに含まれることはありません。何かをスキップした場合は、アシスタントがお知らせします。
  • オンライン操作(プロジェクトのダウンロード、最新バージョンの取得、オンライン公開、GitHub リポジトリの作成)では、まず正確なアドレスとアプリに内蔵およびネットワーク有効のラベルが付いたカードが表示されます。アドレスが github.com でない場合や、新しいリポジトリが公開になる場合は、カードが警告します。オンラインに上げるときは、送信されるファイルがカードに表示されます。実行または拒否を選んでください。
  • github.com 以外のリポジトリを接続する場合も、まず許可を求めます。

GitHub の接続方法とプロジェクトの公開方法は、バイブコーディングをご覧ください。

オフラインモード

オフラインモードでは、コマンドは常にネットワークなしのサンドボックスで実行されます。ネットワークを使うパッケージのインストールと、内蔵 git のオンライン操作(ダウンロード、取得、送信、GitHub)は使えません。バージョンの保存とシンプルな Web ページの表示は引き続き使えます。

管理者向けの設定​

管理者は、環境内の全員を対象に、ローカルコマンドまたは自動実行をオフにできます。管理画面の機能(環境レベル)にあるデスクトップアプリカードで設定します。

  • ローカルコマンドを許可:オフにすると、アシスタントはコマンドを実行できません。内蔵 git のオンライン操作も使えなくなります。ただし、バージョンの保存とブランチは引き続き使えます。これらはファイルツールと同じく、フォルダー内のファイルを変更するだけです。
  • 自動実行を許可:オフにすると、すべてのコマンドで承認が求められ、確認なしでパッケージのインストールを許可をオンにできなくなります。
  • Office ファイル用にアプリの Python を許可:テンプレート、グラフ、分析に使います。この Python はインターネットに接続せずに動作し、作業フォルダーにだけ書き込み、他のプログラムを起動できません。何も設定されていない場合はローカルコマンドを許可に従います。サンドボックスがない環境(Windows)では、ローカルコマンドがオンの場合にのみ利用でき、毎回承認を求めます。