上原正吉(EarthLink Network Co., Ltd.)。AI会社・AI社員による業務自動化と、人の逐次介入なしに24時間自動開発を回す仕組みを自社で実践しています。開発ノウハウと具体的な設定方法、運用して分かった改善点を公開しています。

この記事は、連載「dotvault の使い方 ── .env を手で配るのをやめ、CI・チーム・AI エージェントに 1 コマンドで配るまで」の第 10 回です。この連載が終わる時に、dotvault を誰でも無料で使える形で公開する予定です。
CI の dotvault pull が、ある日 AUTH_REQUIRED で止まります。エラーの文は「invalid, expired or revoked service token」です。token が無効なのか、期限が切れたのか、誰かが止めたのか。止めたのなら、誰がいつ止めたのか。この 1 行からは分かりません。
token を作る人と止める人がばらばらだと、誰がいつその token を止めたかを後からたどる手段がありません。チャットの履歴を探し、関係しそうな人に聞いて回ることになります。
この回では、dotvault の管理コンソールの Audit Log で、誰が、いつ、どの token を止めたかをたどります。この回で確かめたのは、service token の発行と停止、project の archive と削除の 4 つです。この 4 つは、操作した人(Actor)と対象(Target)つきで 1 行ずつ残ります。Action・Target ID・Actor・日付で絞り込め、絞り込んだ画面は URL からそのまま開き直せます。
AUTH_REQUIRED で止まったら、まず dotvault whoami で token の先頭 8 文字を見ます。 est_ に続く 8 文字は、その token の Token ID の先頭です。Token ID は secret ではありません。service_token.revoked を選ぶと、token を止めた操作だけが並びます。 止めた人の email、時刻、token の名前が 1 行に出ます。7 回目(service token の発行と CI からの pull)の続きです。読んでいなくても、画面の流れは追えます。
まず、CI で何が起きたかを端末で見ます。下の図の上半分は、token を作った直後に CI と同じ条件で pull した出力です。下半分は、管理コンソールでその token を Revoke(使えなくする操作)した後に、同じ pull をもう一度打った出力です。

Revoke の後の pull は、終了コード 3(AUTH_REQUIRED)で止まります。エラーの文は、token が無効・期限切れ・止められた、のどれかだと言うだけです。
手がかりになるのは、dotvault whoami の出力の est_1ad24f14… です。est_ に続く 8 文字は、その token の Token ID の先頭です。管理コンソールで token を作った時の画面にも、「Token ID は secret ではない。token の est_ と . の間の部分」と書かれています。この 8 文字を控えて、管理コンソールに移ります。
dotvault whoami は dotvault のサーバーに問い合わせないので、止められた token でも同じ 1 行を出します。whoami の出力には、図では省いた続きの行があり、そこにも書かれているとおり、token が使えるかどうかは dotvault list --project <project 名> で確かめます。終了コード 3(AUTH_REQUIRED)なら、token は止められたか、期限切れか、無効です。
管理コンソールのサイドバーの Audit Log を開きます。1 行が 1 回の操作で、Timestamp(時刻)・Actor(操作した人)・Action(操作の種類)・Target(対象)・Metadata(補足)の 5 列が並びます。
上の Action の一覧から service_token.revoked を選んで Apply を押すと、token を止めた操作だけが残ります。

一番上の行が、さきほど CI を止めた操作です。読み方は次のとおりです。
| 列 | 値 | 読み方 |
|---|---|---|
| Timestamp | 5:39:38 PM | 止めた時刻 |
| Actor | dev-a の email・web | 止めた人の email。web は管理コンソールからの操作 |
| Target | service_token/1ad24f14… | 止めた token の Token ID |
| Metadata | name:ci-deploy | token の名前 |
| Metadata | already_revoked:false | 止める前は使える状態だった |
Target の Token ID は 1ad24f14 で始まり、dotvault whoami の 8 文字と合います。CI を止めたのはこの操作で、止めたのはデモのユーザー dev-a だと分かります。残りの 2 行は、8 回目で AI エージェント用に作り、最後に止めた 2 本の token です。
次に、その token に何があったかを、発行までさかのぼって見ます。Action を「— any —」に戻し、Target ID に Token ID を最後まで入れて Apply を押します。Token ID は、Audit Log の Target の列か、Service Tokens の一覧の Copy ボタンから写せます。

この token についての行が 2 つだけ並びます。下の service_token.created が発行、上の service_token.revoked が停止です。発行の行の Metadata には、作った時の中身が残っています。
envs:production は、production の環境だけに向けて作った token だということです。expires_at:1796200689 は期限で、1970 年からの秒数(Unix 時刻)で書かれています。この値は、発行のちょうど 30 日後の時刻です。name:ci-deploy は、作った時に付けた名前です。誰が、いつ、どの環境に向けて作り、誰が、いつ止めたかが、この 2 行で分かります。
Target ID は、ID 全体と一致する行だけを出します。1ad24f14 のように途中までを入れても、行は出ません。
Service Tokens の画面で、絞り込みを「Revoked only」にすると、止めた token が並びます。

ci-deploy という名前の token が 2 つあります。1 つは 7 回目で作ったもので、もう 1 つはこの回で作ったものです。dotvault は同じ名前の token を作れるので、名前だけでは、どちらを止めたかが分かりません。見分けるのは Token ID です。CI の dotvault whoami が出す 8 文字と、Audit Log の Target と、この一覧の Token ID は、同じ ID でつながっています。
この一覧の「Last used (hourly)」は、token が最後に使われた時刻です。この回の ci-deploy は 5:39:10 PM に使われ、その 28 秒後の 5:39:38 PM に止められています。ただし、この欄は token ごとに 1 時間に 1 回だけ記録されるので、いつも一番新しい利用とは限りません。画面の下にも、その旨が書かれています。
token の名前は、CI の名前と環境を入れるなど、重ならないように付けておくと、一覧で探しやすくなります。
ある日からの token の発行と停止、project の archive と削除を見たい時は、Since(この日から)と Until(この日まで)で絞ります。Since に日付を入れて Apply を押すと、その日からのこの 4 つの操作の行が並びます。

token の 2 行に加えて、project の 2 行が出ています。demo-scratch は、この回の撮影のために作った project で、project.archived で archive し、project.deleted で消しました。消した行の Metadata の secrets_deleted:0 は、消した時にその project に入っていた secret の数です。project の archive と delete の手順は、3 回目で扱いました。
project の 2 行は、Actor が email ではなく f4785468-… という ID で出ています。これは dev-a のユーザー ID で、token の行と同じ人の操作です。Actor の欄の見出しが「Actor (email / sub)」となっているとおり、Actor の絞り込みには email も ID(sub)も入れられます。
| Actor に入れたもの | 出た行 |
|---|---|
| dev-a の email | token の 2 行 |
f4785468(ID の先頭) | 4 行すべて |
email で絞ると、ID で出ている行は外れます。ある人の行を Audit Log から漏らさず拾いたい時は、ID で絞ります。Actor は Target ID と違い、途中までの文字でも絞れます。
Audit Log の画面の上には「絞り込みの設定は URL に残るので、画面をそのまま渡せる」と書かれています。この回で使った絞り込みは、それぞれ次の URL になりました。
https://app.dotvault.io/admin/audit?action=service_token.revoked
https://app.dotvault.io/admin/audit?target=1ad24f14e0c281bc75dd253374de3ac3
https://app.dotvault.io/admin/audit?since=2026-11-02
https://app.dotvault.io/admin/audit?actor=f4785468&since=2026-11-02
& でつなげば、絞り込みを重ねられます。?action=service_token.revoked&since=… なら、その日から止めた token だけが出ます。調べた画面の URL をメモに貼っておけば、後で同じ画面をすぐ開き直せます。Service Tokens の画面の上にある「Audit log」のリンクからも、Audit Log に移れます。
CI の pull が止まった時は、dotvault whoami で Token ID の先頭を見て、Audit Log の Action で service_token.revoked を選び、Target ID に Token ID を入れます。止めた人、時刻、その token をいつ誰がどの環境に向けて作ったかが、Actor と Target つきの行で並びます。token の発行と停止、project の archive と削除は、誰がいつ行ったかが Actor と Target つきで残り、無料の plan でも後から追えます。
dotvault は、.env や設定ファイルの secret をサーバー側に置き、権限のある人・CI・AI エージェントが 1 コマンドで受け取るサービスです(https://dotvault.io)。この連載が終わる時に、dotvault を誰でも無料で使える形で公開する予定です。公開したら、この連載の手順どおりに使い始められます。
興味のある方は、ぜひ「いいね」と記事の購読をお願いいたします。
自社プロダクトは https://www.eln.ne.jp/products にまとめています。
上原正吉。EarthLink Network Co., Ltd. 代表。AI社員に日々の業務を任せ、開発では人が逐一指示しなくても作業が進むHOOTL(Human Out Of The Loop)の仕組みを自社で実践しています。このブログでは、業務自動化と24時間自動開発のノウハウ、具体的な設定方法、日々の運用で見つかった問題と改善を共有します。
また、AIで業務や開発を組み替えたい会社・チーム向けに、AI活用のコンサルティングも受け付けています。ご相談は www.eln.ne.jp からどうぞ。
EarthLink Network は、会社の全業務を AI で回すために、必要になったものを自社で作っています。いま作っているプロダクトの一覧と概要は、こちらにまとめています。
→ EarthLink Network が自社でつくっている18のプロダクト
会社と各プロダクトの詳細は、公式サイト www.eln.ne.jp をご覧ください。