
Gitネイティブな依存関係アドミッションコントローラ。依存関係の変更ごとに信頼シグナルを評価し、パッケージがチームのポリシーに違反した場合、コミットやビルドをブロックします。プリコミットフック + CIゲートに組み込み承認ワークフローを搭載。
Gitネイティブな依存関係アドミッションコントローラ。依存関係の変更ごとに信頼シグナルを評価します。

trustlockはGit pre-commitフック(アドバイザリモード)とCIチェック(強制モード)として動作します:
--enforce): 違反をブロックし、コード1で終了。ベースラインは更新されません。パッケージごとに評価される信頼シグナル:
npm install -g trustlock
Node.js >= 18.3が必要です。
# 1. プロジェクトでtrustlockを初期化
trustlock init
# 2. Git pre-commitフックをインストール
trustlock install-hook
# 3. 必要に応じて現在の依存関係の状態を確認
trustlock audit
init実行後、trustlockは以下を作成します:
.trustlockrc.json — ポリシー設定.trustlock/baseline.json — 信頼済み依存関係のスナップショット.trustlock/approvals.json — 承認記録.trustlock/.cache/ — レジストリキャッシュ(gitignore対象).trustlockrc.jsonと.trustlock/baseline.jsonをリポジトリにコミットします。
# 通常通り依存関係をインストール
npm install [email protected]
# pre-commitフックによりtrustlock checkが自動実行されます。
# 手動で実行する場合:
trustlock check
# すべてのパッケージが許可された場合の出力:
# ✔ [email protected] — admitted
すべてのパッケージが合格すると、trustlock checkは自動的にベースラインを更新し(アドバイザリモードのみ)、コード0で終了します。
# 新しいパッケージがクールダウンのルールに違反:
trustlock check
# ✖ [email protected] — blocked
# exposure:cooldown 公開から2時間(ポリシーでは72時間必要)
# 承認するには:trustlock approve [email protected] --override cooldown --reason "..." --expires 7d
# オーバーライドを承認して再チェック:
trustlock approve [email protected] \
--override cooldown \
--reason "機能Xに必要。チームレビューで安全性確認済み" \
--expires 7d
trustlock check
# ✔ [email protected] — admitted with approval
# モノレポパッケージ間でのバージョンドリフトやプロビナンスの不一致を検出
trustlock audit --compare packages/frontend packages/backend packages/shared
trustlockには--profileで選択可能な2つの組み込みプロファイルが付属しています:
| プロファイル | 効果 |
|---|---|
strict | 168時間のクールダウン、全パッケージにプロビナンス必須 |
relaxed | 24時間のクールダウン、プロビナンスの退行やパブリッシャー変更ではブロックしない |
# CIでstrictプロファイルを使用
trustlock check --enforce --profile strict
チームは共有URLにポリシーを集中管理し、リポジトリごとに拡張できます:
{
"extends": "https://policy.example.com/trustlockrc.json",
"cooldown_hours": 96
}
リポジトリの設定は組織ポリシーを厳しくすることしかできません。下限強制により、リポジトリが組織で設定された閾値を緩和することを防ぎます。
.trustlockrc.jsonオプションtrustlockをCIパイプラインに追加:
# GitHub Actions — 詳細は examples/ci/github-actions.yml
- run: npx trustlock check --enforce
examples/ にGitHub Actions、Lefthook、Huskyの設定があります。
trustlockはコミット時にロックファイルの変更を評価します。npm installをインターセプトしたりサンドボックス化したりはしません。悪意のあるパッケージがpostinstallスクリプトを実行する場合、trustlockがそれを検知する前に実行されます。trustlockは危険なロックファイルがコミットされマージされるのを防ぎ、影響範囲をチーム全体や本番環境ではなく、単一の開発者マシンに限定します。インストール時のスクリプトブロックには、--ignore-scripts またはpnpmのデフォルトのライフサイクルスクリプト制御を使用してください。
--ignore-scriptsを使用してください。npm auditやSnykを使用してください。license-checkerなどを使用してください。trustlockは、標準的なNode.jsツールチェーンがプロジェクトに実際に何が取り込まれるかについて受動的すぎるというフラストレーションから生まれました。npm installは何でも取得します——2分前に公開されたパッケージ、インストール時に任意のスクリプトを実行するもの、レジストリのtarballから一晩でGit URLに変わったもの——そして得られるフィードバックはロックファイルの差分だけです。
trustlockが対処する脅威モデルは狭いですが現実的です:悪意のあるバージョンが公開されてから削除またはフラグが立てられるまでのウィンドウです。脆弱性スキャナーは事後に動作します。trustlockはアドミッション時点で、何かがリポジトリやCIに着地する前に動作します。
設計は意図的に最小限です。trustlockにはランタイムの依存関係がありません——それ自体がサプライチェーンリスクゼロのツールです。脆弱性スキャナーや依存関係監査の代替ではなく、信頼の継続性を強制します。一度ベースラインに含まれたバージョンは信頼されます。新しいものは、宣言されたポリシーに対して許可を得なければなりません。
承認ワークフローは、監査可能性を失わずに逃げ道を必要とするチームのために存在します。すべてのオーバーライドはタイムスタンプ付きで、特定のルールにスコープされ、期限があります。clean-approvalsは後付けではなく、第一級のコマンドです。
| ロックファイル | エコシステム | バージョン |
|---|
package-lock.json | npm | v1, v2, v3 |
pnpm-lock.yaml | pnpm | v5, v6, v9 |
yarn.lock | yarn | classic (v1), berry (v2/v3) |
requirements.txt | Python (pip) | — |
uv.lock | Python (uv) | — |
| コマンド | 説明 |
|---|
trustlock init | 現在のプロジェクトでtrustlockを初期化 |
trustlock check | ポリシーに対する依存関係の変更を評価 |
trustlock approve <pkg>@<ver> | ブロックされたパッケージを承認 |
trustlock audit | 全依存関係ツリーの信頼状態をスキャン |
trustlock audit --compare <dir...> | 複数プロジェクト間の依存関係の状態を比較 |
trustlock clean-approvals | 期限切れの承認エントリを削除 |
trustlock install-hook | Git pre-commitフックをインストール |