
CORTEX_USER ・CORTEX_AGENT_USERデータベースロールによるCoCo in Snowsightの表示制御を確認してみた
データ事業本部の鈴木です。
2026年10月19日の週から以下のCoCo in Snowsightの利用制御に関する変更がアカウントに適用され始めました。適用されると、CoCo in Snowsightの表示・利用制御がSNOWFLAKE.COPILOT_USERデータベースロールではなく、CORTEX_USER・CORTEX_AGENT_USERデータベースロールや、ユーザーごとの利用クレジット数制限向けのアカウントパラメータによるものになります。
CoCoは便利ですが、デフォルトでSnowsightにアイコンが表示されるため、一部ユーザーにのみ見せるようにしたい場面があると思います。以前はSNOWFLAKE.COPILOT_USERデータベースロールをユーザーのロール(継承しているロールを含む)から除外するとSnowsightではCoCoが表示されなくなっていましたが、今後それをする場合にはどうするのだろうと思ったので確認し、変更後の仕様と一致する動作を確認しました。
CoCoの利用制限の仕組み
現状、以下の2つの方法で制限が可能です。
データベースロール
冒頭のガイドによると、CoCo利用に関するデータベースロールとして、以下が用意されています。
SNOWFLAKE.CORTEX_USERSNOWFLAKE.CORTEX_AGENT_USER
SNOWFLAKE.CORTEX_USERデータベースロールはSnowflake Cortexの機能へのアクセス権を付与するために使用されます。デフォルトでPUBLICロールに付与されています。
SNOWFLAKE.CORTEX_AGENT_USERはSnowflake CortexエージェントAPIへのアクセスを許可するものです。確認した限り、権限的にはSNOWFLAKE.CORTEX_USERデータベースロールのサブセットとなっていました。
データベースロールについては以下に解説があります。ほかにもいくつかのCortex AI関連のデータベースロールがありますが、CoCo in Snowsightの表示制御には先の2つが関連すると考えられます。
アカウントパラメータ
以下のパラメータにクレジット数値を設定することで、超過時の挙動を制御できます。
CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER: CoCo CLICORTEX_CODE_DESKTOP_DAILY_EST_CREDIT_LIMIT_PER_USER: CoCo DesktopCORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER: CoCo in Snowsight
こちらのパラメータはSnowsightの画面表示ではなく、制限値超過時にCoCoからエラーを返させる動きになります。
検証してみた
1. 既存環境の確認
まずはPUBLICロールに付与されているCortexに関する権限一覧を確認し、冒頭の変更が適用されていそうか確認しました。

このアカウントに対して特にAI機能に関する権限の設定変更はしていませんが、既にPUBLICロールにSNOWFLAKE.CORTEX_USERデータベースロールしか付与されていないので、冒頭に紹介した変更が適用されているものと判断しました。
なお、USE AI FUNCTIONSはAI関数を利用するためのアカウントロール、SNOWFLAKE."CORTEX-MODEL-ROLE-ALL"はアカウントで利用できるモデルを指定しているものになります。
今回は、検証のため、一旦PUBLICロールからSNOWFLAKE.CORTEX_USERデータベースロールとUSE AI FUNCTIONSを剥奪しておきました。確認用にSYSADMINに直接付与しました。
-- 以下のガイドを参考に剥奪
-- https://docs.snowflake.com/en/user-guide/snowflake-cortex/aisql-privileges-and-access#cortex_user-database-role
REVOKE USE AI FUNCTIONS ON ACCOUNT
FROM ROLE PUBLIC;
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
FROM ROLE PUBLIC;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE PUBLIC;
-- 確認用にSYSADMINに付与
GRANT USE AI FUNCTIONS ON ACCOUNT TO ROLE SYSADMIN;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
TO ROLE SYSADMIN;
この状態で、SYSADMINでCoCo in Snowsightが表示・利用できました。

2. SNOWFLAKE.CORTEX_USERデータベースロールでの確認
続いて、検証用のロールを作成し、SNOWFLAKE.CORTEX_USERを付与すればCoCo in Snowsightが表示・利用できることを確認しました。
まず、検証用のユーザー・ロールを作成しました。
USE ROLE USERADMIN;
CREATE ROLE COCO_SNOWSIGHT_TEST_ROLE;
CREATE USER COCO_SNOWSIGHT_TEST_USER
PASSWORD = '<パスワード>'
MUST_CHANGE_PASSWORD = TRUE
DEFAULT_ROLE = COCO_SNOWSIGHT_TEST_ROLE;
GRANT ROLE COCO_SNOWSIGHT_TEST_ROLE TO USER COCO_SNOWSIGHT_TEST_USER;
この時点で、COCO_SNOWSIGHT_TEST_USERはCoCo in Snowsightを表示する権限は持っていません。
このユーザーでSnowsightにログインすると確かにCoCoが表示されませんでした。

では、COCO_SNOWSIGHT_TEST_ROLEにSNOWFLAKE.CORTEX_USERデータベースロールを付与してみました。
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
TO ROLE COCO_SNOWSIGHT_TEST_ROLE;
付与後、ユーザーでSnowsightにログインすると確かにCoCoが表示されました。

3. SNOWFLAKE.CORTEX_AGENT_USERデータベースロールでの確認
次に、SNOWFLAKE.CORTEX_AGENT_USERデータベースロールでも確認しました。
COCO_SNOWSIGHT_TEST_ROLEからSNOWFLAKE.CORTEX_USERデータベースロールを剥奪し、代わりにSNOWFLAKE.CORTEX_AGENT_USERデータベースロールを付与しました。
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER
TO ROLE COCO_SNOWSIGHT_TEST_ROLE;
再びユーザーでSnowsightにログインするとCoCoが表示されました。

4. アカウントパラメータを0に設定
CoCoが表示できている状態で、CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USERを0にもしてみました。
SNOWFLAKE.CORTEX_AGENT_USERの代わりにSNOWFLAKE.CORTEX_USERを付与して、CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USERを0にします。
デフォルトの状態で、アカウントパラメータのみ0にしたのと同等の状態ですね。
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER
FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
TO ROLE COCO_SNOWSIGHT_TEST_ROLE;
ALTER USER COCO_SNOWSIGHT_TEST_USER SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = 0;
この状態だと、CoCoはSnowsightに表示されますが、回答時にエラーが返るようになりました。

そもそもユーザーに表示したくない場合は、ロールから権限を剥奪しておく必要があると分かります。
最後に
Snowflake CoCo in Snowsightの利用制御向けのロールが変更されるため、新しい方法と、一部ユーザーのみに表示させる具体的な実装方法を確認してみました。
参考になりましたら幸いです。








