はじめに:突然「Authentication token has expired」と出てびっくり!
Snowflakeで作業中、こんなメッセージが急に出てきて焦った経験はありませんか?
Authentication token has expired. The user must authenticate again.
「さっきまで普通にクエリ実行できていたのに!」と思いますよね。でも安心してください。これは 認証トークン (Authentication Token) の有効期限が切れた ことを伝えているだけのお知らせで、アカウントがロックされたわけでも、設定が壊れたわけでもありません。
この記事では、初心者の方でもスッキリ理解できるように、エラーの仕組みと 再ログイン・再接続の方法 を解説していきます。

そもそも「認証トークン」ってなに?
Snowflakeにログインすると、毎回ユーザー名・パスワードを入れ直さなくて済むように、サーバーから 認証トークン という「身分証明書のような文字列」が発行されます。クライアント (Snowsight や CLI、Pythonコネクタなど) はこのトークンを使って、以降の操作を行います。
ただし、このトークンには 有効期限 があり、Snowflakeの公式仕様では以下のように決まっています。
- セッショントークン: デフォルトで 1時間 有効
- マスタートークン (再発行用): デフォルトで 4時間 有効
- セッションのアイドル時間が 4時間 を超えると自動切断
つまり、しばらく何も操作していなかったり、長時間スクリプトを動かしっぱなしにしていたりすると、トークンの期限が切れて「もう一回認証してね」と言われるわけです。
主な原因をチェックしよう
① 長時間ブラウザを放置していた
Snowsight (Webコンソール) をタブで開きっぱなしにしてランチに行ったあと、戻ってきてクエリを実行するとこのエラーが出やすいです。
② Pythonスクリプトや BIツールが長時間動いている
ETL処理が4時間を超えるケースや、ノートブックで session を作ったまま放置したケースで発生します。
③ パスワードやMFAの設定変更
パスワードリセットやMFA再登録を行うと、既存トークンは即座に無効化されます。
④ ネットワーク切断・PCのスリープ
Wi-Fi切断やノートPCのスリープ後にも、トークンが切れて再認証を求められることがあります。

再ログイン・再接続の方法
Snowsight (Web画面) の場合
一番カンタンです。画面右上のアカウントアイコンから Sign Out → 再度ログインしましょう。エラーバナー内に「Sign in again」リンクが出ていればそれをクリックでOKです。ブラウザのキャッシュが悪さをしているときは、シークレットウィンドウで開き直すのも有効です。
SnowSQL / Snowflake CLI の場合
セッションを切って接続し直します。
# SnowSQLの場合
!exit
snowsql -a <account> -u <user>
# Snowflake CLIの場合
snow connection test -c my_conn
Python コネクタの場合
長時間処理を行うときは、必ず例外をキャッチして再接続する処理を入れておくと安心です。
import snowflake.connector
def get_conn():
return snowflake.connector.connect(
user="USER",
password="PASSWORD",
account="xy12345.ap-northeast-1.aws",
client_session_keep_alive=True, # ← ポイント!
)
client_session_keep_alive=True を指定すると、クライアントが定期的にハートビートを送り、セッションが切れにくくなります。長時間バッチには必須のオプションです。
よくある注意点
- ログインができない別の原因 (MFA・IP制限・SSO) と紛らわしいので、まずは Snowflakeにログインできない時の対処法|MFA・IP・SSO切り分け完全ガイド で全体像を押さえておくと安心です。
- トークン期限自体は短く設定しすぎないように。短すぎるとバッチが失敗しやすくなります。
- 権限不足のエラー (Insufficient privileges to operate on) や Object does not exist or not authorized とは原因がまったく違うので、メッセージをよく読み分けましょう。
まとめ
「Authentication token has expired」は、Snowflakeが「セッションの有効期限切れたよ〜」と教えてくれているだけのメッセージです。再ログインするだけで解決 しますし、Pythonなどの自動処理では client_session_keep_alive を入れておけばかなり防げます。慌てず、サインアウト→サインインしてみてください。
参考リンク
関連記事
- Snowflakeにログインできない時の対処法|MFA・IP・SSO切り分け完全ガイド – ログイン関連エラーを総合的に切り分けたい方へ
- Snowflakeリソースモニターのクレジット上限到達エラー解除手順 – ウェアハウスが停止して接続エラーが出るケースの対処
- Insufficient privileges to operate on の原因と解決手順 – 権限不足エラーの見分け方
- Object does not exist or not authorized エラーの正体 – オブジェクトが見えない時のデバッグ手順


