0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VibeCodingで秘匿データをAIから守るCLIツールをVibeCodingで作った

0
Last updated at Posted at 2026-04-17

はじめに

タイトルの通りで,VibeCodingで秘匿データをAIから守るCLIツール(vibeguardian:名前がちょっとかっこいい)をVibeCodingで作成しました.良かったら是非ご活用いただき,Issue等でフィードバックいただけると嬉しいです.

背景

VibeCodingが全盛となった今,.envなどの秘匿データを漏洩させるリスクに常に気を配る必要があります.

こちらの記事で参照しているXのポストでは,Claude Codeが.envを読み,秘匿データが漏洩した事例を伝えています.

・Antigravityは無関係、Claude Codeで起きてた。

・重要操作は人間の承認が必要な設定になっていたが、問題は権限ではなかった。

Claude Codeが.envを読み込んだ(読み込み禁止にしてたのに無視されてた)

その中の認証情報がログに出力されてた。

漏洩して悪用された。

その中の認証情報がログに出力されてた

これは対岸の火事ではなく,VibeCodingでコーディングしている全エンジニアはこのようなリスクを理解してClaude Code等のサービスを利用する必要があるということだと思います.

各種サービスでは,リポジトリ内の.envなどの秘匿データを触ることを禁止するように設定が可能(↑のポストも禁止していた模様)です.ただ,それでも限界があり,今回の事例のようにAgent自体が抜け道を探して秘匿データが漏洩してしまいます.

※↓は書き込みの突破例ですが,.envの読み込みも同じ要領で突破されることがあると思います.

例:
mkdir は sandbox で禁止されていますが、Write ツールで直接ファイルを作成します。

つまり,いくら秘匿データを読み込むコマンドをブロックしても,代替手段で突破され,結局イタチごっことなってしまいます.

そこで,冒頭に記載したようにvibeguardianというライブラリを作成し,そもそも秘匿データをリポジトリ内で管理しない,キーを表示させない方法をVibeCodingで作成してみました.

(とはいえ後述の通りローカルでキー管理しており,そこを読まれたらアウトなので,あまり解決していないかも...)

vibeguardian

機能

主な機能は以下の3つになります.ポイントとしては,そもそも秘匿データはリポジトリに入れない..envデータをリポジトリ外で管理ということです.また,万が一アプリ側にデバッグコードとしてprint文を入れたとしても,標準出力は常に監視しているので,***[MASKED]***と出て漏洩から護ってくれます.

機能 説明
Inject Mode ~/.vibeguard/secrets.json から実際のキーを読み込み、子プロセスのメモリ上にだけ展開。ディスクや .env には書き出しません。
Proxy Mode ローカルでリバースプロキシ(デフォルト :8080)を起動し、AIが生成したコードの localhost:8080/proxy/stripe 宛てリクエストに Authorization ヘッダを裏で付与して転送。
Log Mask Mode 子プロセスの stdout/stderr をリアルタイムでフックし、シークレット文字列が含まれていれば ***[MASKED]*** に置換して表示。

使用方法はuvのように,vg run --を実行したいコマンドの前につけてあげれば良いだけです.

vg run -- {実行したいコマンド}

アーキテクチャ

アーキテクチャは以下のようになっています.現時点では,~/.vibeguard/secrets.jsonに平文で管理していますが,暗号化対応などもできればと考えています.

architecture_ja.png

課題

  • 上述の通り現在はキーを平文管理.オプション(またはデフォルト)で暗号化などもできれば.
  • SDK経由の外部連携の場合,Proxyモードは非対応(現状Inject Modeでも十分なはず?)

作り方

vibeguardianは,VibeCodingで作っていると記載しました.最後にどういった過程で作ったかを簡単に紹介します.

  • Geminiに「課題・やりたいこと」を壁打ちし,アーキテクチャを作ってもらう

作ってもらったアーキテクチャ

CLIインターフェース

  • 上記設計書をもとにRustで作ってとCopilotに依頼(以降Copilotでの作業)
  • フォルダ構成,テスト構成など数ラリー実施
  • 公開用のGithub Actions設定,デモアプリ実装,Homebrew対応も数ラリー

このようにして作りました.昼休みの1時間ちょいで完成したので恐ろしい限りです...

おわりに

VibeCodingによってコードを書く機会が激減し,生産性は向上しました.しかし,その代償?として,情報漏洩しては元も子もないと思います.

今回作った(作ってもらった)vibeguardianにどれだけ需要があるかはわかりませんが,是非ご活用いただき,Issue等でフィードバックいただけると嬉しいです.

ちなみに,他にも類似サービスは当然ながらあるので,アカウント作成が面倒!などであればvibeguardianは選択肢に入ると思います.チーム間共有などは非対応ですし,今後もサポートはしないと思うので,目的に合えば使ってください.(※下表はGeminiに作らさせています)

機能 / ツール vibeguardian (本ツール) 1Password CLI / Infisical dotenv-vault
主目的 AIエージェントからの保護 チーム間の安全な共有 デプロイ環境の同期
セットアップ 1秒(ローカルJSONのみ) アカウント作成・認証が必要 アカウント作成・ログイン
環境変数の注入 メモリ上のみ(安全) メモリ上のみ(安全) 最終的に.envを復号(危険)
AIによるログ読み取り防止 Aho-Corasickによる高速マスク なし(ログに出たら終わり) なし
APIヘッダーの自動注入 ローカルプロキシで透過的に実行 なし なし
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?