Secretlint v12.0.0リリース: Groq、Hugging Face、Notion、GitLab、Grafana、HashiCorp Vault、Vercel、Databricks、Docker、Figmaの検出に対応
ソースコードや設定ファイルに含まれるAPIトークンやパスワードなどの機密情報を見つけるSecretlintのv12.0.0をリリースしました。
このバージョンでは、次のように追加で検知できるようになったサービスが10個あります。
- Groq、Hugging Face、Notion、GitLab、Grafana、HashiCorp Vault、Vercel、Databricks、Docker、Figma
あわせて、@secretlint/secretlint-rule-preset-recommendのパッケージサイズを約80%削減しています。
新しく追加された検出ルール
@secretlint/secretlint-rule-preset-recommendに、次の10個のサービスのAPIトークンなどを検出するルールが追加されました。
- Groq -
gsk_から始まるAPIキー - Hugging Face -
hf_から始まるUser Access Token - Notion -
secret_/ntn_から始まるIntegration Token - GitLab - Personal Access Token、Pipeline Trigger Token、Runner Registration Tokenなど
- Grafana - Service Account TokenやCloud Access Policy Token
- HashiCorp Vault -
hvs./hvb.から始まるトークン - Vercel - Access Token
- Databricks -
dapiから始まるPersonal Access Token - Docker -
dckr_pat_から始まるPersonal Access TokenとDocker Hub認証情報 - Figma -
figd_/figu_/figoa_などで始まるトークン
@secretlint/secretlint-rule-preset-recommendを使っている場合は、v12.0.0にアップデートすると自動的にこれらのルールも有効になります。
今回追加したトークンは、GitHubのSecret scanning partnerのリストを参照することで、確度の高いパターンを持つトークンに絞り込んでまとめて実装しました。 誤検知が少ないトークンフォーマットを持つサービスを優先したため、検出精度を保ったままカバー範囲を広げられています。
Presetのパッケージサイズを約80%削減
@secretlint/secretlint-rule-preset-recommendのパッケージサイズを、v11と比べて約82%削減しました。
| Preset | v11 | v12 | 削減率 |
|---|---|---|---|
@secretlint/secretlint-rule-preset-recommend |
1,036KB | 187KB | -82% |
@secretlint/secretlint-rule-canary |
1,060KB | 211KB | -80% |
10個のルールが増えたにもかかわらず、全体としては約82%縮小しています。
主な要因は、GCPのService Account p12ファイル検出ルール(@secretlint/secretlint-rule-gcp)で使っていたnode-forge依存の置き換えです。
Web CryptoベースのPKCS#12 MAC検証実装に差し替えました。
p12ファイルの判定に必要なのはMACの検証だけなので、パース・復号処理を含むnode-forge全体を抱える必要がなくなりました。
Breaking Change: Node.js 22+のサポート
v12.0.0では、Node.js 20のサポートを終了し、Node.js 22以上が必要になりました。 Node.js 20は2026-04-30でActive LTSが終了するため、少し前倒しでサポートを切っています。
Breaking Change: CommonJSビルドの削除
v12.0.0では、各パッケージのCommonJSビルドと、CJS/ESMのdual packageサポートを削除しました。 ESMのみの配布になります。
Secretlint自体はv7.0.0でESMへ移行済みでしたが、互換性のためCJS向けのビルドも残していました。 Node.js 22+でESMの利用が一般化したため、dual packageの保守コストを削減するためにCJSビルドを削除しています。
SecretlintをCLIとして利用している場合、特に影響はありません。
Node.js 22+ではrequire(esm)がサポートされています。
そのため、@secretlint/nodeや@secretlint/coreなどをrequire()しているコードもそのまま動作します。
使っているプロジェクト: SecureClipboard
Secretlintを組み込んだプロジェクトの例として、先日公開したSecureClipboardを紹介します。
SecureClipboardはクリップボードを監視するmacOSアプリです。 コピーされたテキストや画像に機密情報が含まれていた場合、自動でマスクします。 内部ではsecretlintの単一バイナリ版をsubprocessとして呼び出してスキャンしています。
v12.0.0で追加されたGroqやHugging Face、Notion、Vercel、Docker、Figmaなどのトークンも、SecureClipboard側で追加対応なしに検出できます。 このように、secretlintをライブラリ/バイナリとして組み込む使い方でも、presetをアップデートするだけで検出対象を拡張できます。
まとめ
Secretlint v12.0.0では、10個のサービスに対応する新しい検出ルールを@secretlint/secretlint-rule-preset-recommendに追加しました。
同時にpresetのサイズを約80%削減しています。
CJSビルドの削除というBreaking Changeがあるので、ライブラリとして利用している場合はESMへの移行が必要です。
フィードバックがあればGitHubのIssueでお知らせください。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。