[新機能]SnowflakeがリリースしたCLIのコーディングエージェント「Cortex Code CLI」を試してみた

[新機能]SnowflakeがリリースしたCLIのコーディングエージェント「Cortex Code CLI」を試してみた

2026.02.03

さがらです。

つい先程、Cortex Codeのパブリックプレビューだけでなく、「Cortex Code CLI」という機能が最初からGAでリリースされました!

https://docs.snowflake.com/en/release-notes/2026/other/2026-02-02-cortex-code-cli

Cortex Code CLIは、ターミナル上で自然言語リクエストを投げると、Snowflakeネイティブなスキル(例:カタログ探索、SQL生成・実行、アプリ作成補助など)や、必要に応じてMCPツールを組み合わせて作業を進めてくれるCLIの機能です。

早速Cortex Code CLIを試してみたので、その内容について本記事でまとめてみます。

前提条件

  • OS:Ubuntu 24.04 LTS ※WSL2で動作
  • Cortex Code CLI:1.0.5
  • 接続先のSnowflake:AWS東京リージョン、Enterpriseエディション

Cortex Code CLIをインストール

以下のコマンドを実行してCortex Code CLIをインストールします。

curl -LsS https://ai.snowflake.com/static/cc-scripts/install.sh | sh

sandbox functionalityのためにPodmanのインストールも聞かれましたが、今回はインストールしませんでした。

2026-02-03_21h57_42

Cortex Code CLIを起動しSnowflakeへ接続

ということで、早速Cortex Code CLIを起動してSnowflakeへ接続してみます!

接続情報の設定

接続にはSnowflake CLIと同じく~/.snowflake/connections.tomlの情報を使用することができます。Snowflake CLIからの接続の設定は本記事では省略しますが、以下の記事が参考になると思います。

https://dev.classmethod.jp/articles/snowflake-oauth-local-applications-snowflakecli-try/

https://dev.classmethod.jp/articles/snowflake-cli-install-and-connect-with-keypair/

Cortex Code CLIの起動

cortexコマンドを実行して、Cortex Code CLIを起動します。

cortex

まず、テキストの色味を選択します。(ペンギンかわいい…)

2026-02-03_22h04_49

次に、セキュリティに関する注意書きが表示されます。

2026-02-03_22h06_38

接続先を選択します。(事前にtomlファイルを設定していると、このように表示されるはずです。)

2026-02-03_22h07_22

Cortex Code CLIが実行するSQLの課金先のアカウントについて聞かれますが、特に同一アカウントで問題ないためyesを選択しました。

2026-02-03_22h08_27

これで、セットアップ完了です!

2026-02-03_22h10_16

接続しているSnowflakeのアカウントについて聞いてみる

まずは公式Docを参考に、接続しているSnowflakeアカウントについて聞いてみます。

「私がアクセスできるデータベースの一覧を教えて」と聞いてみると、アクセス可能なデータベースを一覧で出してくれました。

2026-02-03_22h17_02

「2026年1月に実行されたタスクの一覧と成功割合を出して」と聞くと、タスク数と実行回数もまとめて、体系的に出力してくれました。

2026-02-03_22h20_01

2026-02-03_22h20_20

planモードを有効化して、ガイドラインを参考にしたコード生成を依頼してみる

次に、最近私がClaude Codeで行っていることをCortex Code CLIで試した場合にどうなるのかを試してみたく、ガイドラインを参考にしたコード生成を依頼してみます。

まず前提として、下図のようにSnowflakeのロール設計方針をまとめたガイドラインのMarkdownファイルがあるとします。(利用費用が心配なのでロールの部分だけ抜粋したファイルで試します。)

2026-02-03_22h26_28

2026-02-03_22h36_58

私はClaude Codeを使うとき基本的にPlanモードで実装計画を同意できるものにしてから実装をお願いしているのですが、Cortex Code CLIにもPlanモードがあるため有効化します。

/planと入れることで、有効化できます。

2026-02-03_22h27_54

2026-02-03_22h28_23

ガイドラインのファイルを指定する場合は、@を入れると現在のディレクトリにあるファイル一覧を出してくれるので楽です。

2026-02-03_22h29_16

この上で、「@Snowflake設計方針_ロールのみ.md を参考に、RAW_DBに関するデータベースとスキーマに関するアクセスロールのサンプルクエリを作成して」、と入力して依頼します。

2026-02-03_22h32_11

すると、下図のようにガイドラインに沿って適切にサンプルクエリを作成してくれました。(Planモードなのですが、ここまで出力してくれることに驚きました…)

2026-02-03_22h36_25

2026-02-03_22h39_39

上記の画像は中略していますが、全文は以下となります。

設計方針ドキュメントを確認しました。RAW_DBに関するアクセスロールのサンプルクエリを作成します。

  サンプルクエリの構成

  RAW_DBは「8.3.2.1」に該当する特殊なDB(作成権限のみ)として設計します。

  1. データベース用Access Role

    -- ===========================================
    -- RAW_DB データベース用 Access Role
    -- ===========================================

    -- 参照用(USAGE のみ)
    CREATE ROLE IF NOT EXISTS _DATABASE_RAW_DB_USAGE_AR;
    GRANT USAGE ON DATABASE RAW_DB TO ROLE _DATABASE_RAW_DB_USAGE_AR;
    GRANT ROLE _DATABASE_RAW_DB_USAGE_AR TO ROLE SYSADMIN;

    -- 書き込み用(スキーマ作成可能)※ロードツールがスキーマを自動作成する場合用
    CREATE ROLE IF NOT EXISTS _DATABASE_RAW_DB_RW_AR;
    GRANT USAGE ON DATABASE RAW_DB TO ROLE _DATABASE_RAW_DB_RW_AR;
    GRANT MONITOR ON DATABASE RAW_DB TO ROLE _DATABASE_RAW_DB_RW_AR;
    GRANT CREATE SCHEMA ON DATABASE RAW_DB TO ROLE _DATABASE_RAW_DB_RW_AR;
    GRANT ROLE _DATABASE_RAW_DB_RW_AR TO ROLE SYSADMIN;

  2. スキーマ用Access Role(例: SALESFORCE_FIVETRAN)

    -- ===========================================
    -- RAW_DB.SALESFORCE_FIVETRAN スキーマ用 Access Role
    -- ===========================================

    -- スキーマ作成(Managed Access Schema)
    CREATE SCHEMA IF NOT EXISTS RAW_DB.SALESFORCE_FIVETRAN WITH MANAGED ACCESS;

    -- --------------------------------------------
    -- RO_AR(参照専用)
    -- --------------------------------------------
    CREATE ROLE IF NOT EXISTS _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;

    -- スキーマ権限
    GRANT USAGE ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;

    -- 既存オブジェクトへの参照権限
    GRANT SELECT ON ALL TABLES IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;
    GRANT SELECT ON ALL VIEWS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;
    GRANT SELECT ON ALL STREAMS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;
    GRANT USAGE ON ALL FILE FORMATS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;

    -- FUTURE GRANTS(今後作成されるオブジェクト)
    GRANT SELECT ON FUTURE TABLES IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;
    GRANT SELECT ON FUTURE VIEWS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;
    GRANT SELECT ON FUTURE STREAMS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;
    GRANT USAGE ON FUTURE FILE FORMATS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR;

    -- ロール階層
    GRANT ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR TO ROLE SYSADMIN;

    -- --------------------------------------------
    -- RW_AR(作成権限のみ - RAW_DB特有)
    -- --------------------------------------------
    CREATE ROLE IF NOT EXISTS _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;

    -- スキーマ権限
    GRANT USAGE ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT MONITOR ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;

    -- CREATE権限(RAW_DBに必要なオブジェクトのみ)
    GRANT CREATE TABLE ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT CREATE VIEW ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT CREATE STAGE ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT CREATE FILE FORMAT ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT CREATE PIPE ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT CREATE STREAM ON SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;

    -- 既存オブジェクトへの操作権限
    GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT SELECT ON ALL VIEWS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT SELECT ON ALL STREAMS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT USAGE ON ALL FILE FORMATS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT OPERATE, MONITOR ON ALL PIPES IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;

    -- FUTURE GRANTS
    GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON FUTURE TABLES IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN

        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT SELECT ON FUTURE VIEWS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT SELECT ON FUTURE STREAMS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT USAGE ON FUTURE FILE FORMATS IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;
    GRANT OPERATE, MONITOR ON FUTURE PIPES IN SCHEMA RAW_DB.SALESFORCE_FIVETRAN
        TO ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR;

    -- ロール階層
    GRANT ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR TO ROLE SYSADMIN;

  3. Functional Roleへの付与例

    -- ===========================================
    -- Functional Role への付与例
    -- ===========================================

    -- データロード用FR(Fivetran用)
    CREATE ROLE IF NOT EXISTS DATALOAD_FIVETRAN_FR;
    GRANT ROLE _DATABASE_RAW_DB_RW_AR TO ROLE DATALOAD_FIVETRAN_FR;
    GRANT ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RW_AR TO ROLE DATALOAD_FIVETRAN_FR;
    GRANT ROLE DATALOAD_FIVETRAN_FR TO ROLE SYSADMIN;

    -- 開発用FR(RAWデータ参照のみ)
    CREATE ROLE IF NOT EXISTS DEVELOP_SALES_CRM_FR;
    GRANT ROLE _DATABASE_RAW_DB_USAGE_AR TO ROLE DEVELOP_SALES_CRM_FR;
    GRANT ROLE _SCHEMA_RAW_DB_SALESFORCE_FIVETRAN_RO_AR TO ROLE DEVELOP_SALES_CRM_FR;
    GRANT ROLE DEVELOP_SALES_CRM_FR TO ROLE SYSADMIN;

  ポイント

  ┌───────────────────────┬───────────────────────────────────────────────┐
  │ 項目                   │ 内容                                          │
  ├───────────────────────┼───────────────────────────────────────────────┤
  │ Managed Access Schema │ 他ロールへの勝手な権限付与を防止                   │
  ├───────────────────────┼───────────────────────────────────────────────┤
  │ RAW_DB特有の設計        │ RW_ARはCREATE権限中心(通常スキーマと異なる)      │
  ├───────────────────────┼───────────────────────────────────────────────┤
  │ FUTURE GRANTS         │ 今後作成されるオブジェクトにも自動で権限付与         │
  ├───────────────────────┼───────────────────────────────────────────────┤
  │ ロール階層              │ 全Access Role → SYSADMIN                      │
  └───────────────────────┴───────────────────────────────────────────────┘

  このサンプルを実行しますか?または、スキーマ名やデータソース名を変更して調整が必要でしょうか?

全く問題ない内容であったので、「この内容で問題ないため、適切なファイル名で今のディレクトリに出力してください。」と入れると、改めて実装する内容が表示されます。問題なければYesを選択します。

2026-02-03_22h42_25

ファイルを出力する際は、このように差分を表して作成してよいか確認をしてくれます。問題ないためYesを選択します。

2026-02-03_22h43_25

「ファイルを作成しました。」と表示されたので、ファイルを見てみると、無事に作成されていました!

2026-02-03_22h44_41

最後に

SnowflakeがリリースしたCLIのコーディングエージェント「Cortex Code CLI」を試してみました。

率直な感想として、今回試した範囲ではClaude Codeとそこまで使用感も変わりなく使えて、とても良い開発者体験ができました。ローカルで操作できるため、ユーザー好みの環境でこの機能が使えるのが素晴らしいですね…!

現時点でも満足できる機能ですが、今後のアップデートにも期待しています!!

この記事をシェアする

FacebookHatena blogX

関連記事