# あなたのコードとビルドは、あなたのもののまま

Source: https://latchkey.dev/ja/security

セキュリティ

各ジョブは、インバウンド接続を受け付けないマシンで単独で実行されます。Latchkey がコードに加える変更はすべて、あなたがレビューするプルリクエストとして届きます。

最終更新日 2026年11月8日

- [セキュリティアーキテクチャの全体を読む](/documentation/security-architecture)

- 1 マシンあたりのジョブ数 (マシンはジョブの終了後に破棄されます)
- 0 ランナーが受け付けるインバウンド接続
- 0 Latchkey がマージするプルリクエスト
- AES-256 Latchkey に保存するシークレットの暗号化

01 · 分離

## すべてのジョブに、専用のマシンを

各ジョブは、独自のカーネルと暗号化されたディスクを持つ専用の仮想マシンで実行されます。ジョブが終わるとマシンは終了され、ディスクは削除されます。どのマシンも、2 つ目のジョブを実行することはありません。

1. 01 起動 どのジョブも使っていない仮想マシン
2. 02 実行 マシン上には、あなたのジョブだけ
3. 03 終了 完全に停止し、再利用されません
4. 04 削除 暗号化されたディスクも一緒に消えます

コードは、あなたのジョブだけを実行するマシンにチェックアウトされ、そのマシンはジョブの終了時に破棄されます。ジョブの後に Latchkey が保持するものは、[プライバシーポリシー](/ja/privacy)とドキュメントに記載しています。

02 · ネットワーク

## ランナーからは外へ。外からは何も届きません。

各ランナーは自身のパブリック IPv4 アドレスからインターネットに接続します。このアドレスはランナー自身が開始する接続にだけ使われ、ファイアウォールにはインバウンドルールがありません。それでもビルドはパッケージを取得し、あなたのサービスを呼び出せます。Latchkey CI では、フォークからのプルリクエストがアクセスできるのは GitHub と、固定された一連の公開パッケージレジストリだけです。

03 · 認証情報

## ジョブごとに発行される認証情報

Latchkey がジョブのために発行する認証情報は、すべてそのジョブのためだけに発行され、ほかのワークスペースのデータには届きません。いずれもジョブの終了時か約 1 時間で失効します。ただし、Docker が Latchkey のコンテナレジストリに使うトークンは 12 時間有効です。長期間有効な GitHub トークンがランナーに置かれることはありません。

- クローントークン 読み取り専用 リポジトリ 1 つ 約 1 時間
- ジョブトークン このジョブのみ ハッシュ化して保存 ジョブの終了まで
- キャッシュアクセス このワークスペースのみ スコープ付き 最長 12 時間

04 · シークレット

## Latchkey に保存したシークレットは封印されたまま

Latchkey に保存したシークレットは AES-256-GCM で暗号化され、Latchkey がそれを復号するのは、そのシークレットを指定するステップを持つ実行中のジョブのためだけです。ジョブのログで値の全体が現れる箇所はすべてマスクされ、ダッシュボードからのリクエストでも、CLI や API キーを使ったリクエストでも、値が返されることはありません。

Latchkey が Actions のシークレットを求めて GitHub の API を呼び出すことはありません。

05 · 変更

## コードへの変更はすべて、あなたのレビューを待ちます

Latchkey がコミットするのは、自分で作成した新しい `latchkey/` ブランチだけで、その後プルリクエストを開きます。あなたのブランチに push することも、マージすることもないため、マージするかどうかは常にあなたが決めます。

06 · 自己修復

## 自己修復はガードレールの内側で動きます

ステップが失敗したとき、自己修復が実行できるのは、固定された検証済みのリストにあるアクションだけで、AI にシェルは与えられません。自己修復がエラーになったりタイムアウトしたりした場合、失敗したステップは失敗のままです。

- 許可 `apt-get install -y libssl-dev` 固定リストにあるパッケージ
- 許可 `失敗したステップを再試行` 同じステップ、同じマシン
- 拒否 `sudo rm -rf /var/lib/docker` 許可される sudo コマンドは 1 つだけ
- 拒否 `LD_PRELOAD=/tmp/hook.so` 安全でない環境変数
- 拒否 `read ~/.ssh/id_rsa` 機密性の高いパス

07 · 基本

## そのほかも、しっかりカバー

- 保存時の暗号化 ランナーのディスク、ビルドキャッシュ、アーティファクトは保存時に暗号化されます。
- 転送中の暗号化 すべての公開エンドポイントは HTTPS を使い、API は TLS 1.2 以上を必須としています。
- 分離されたキャッシュ ワークスペースのビルドキャッシュには、そのワークスペースに限定された認証情報でしかアクセスできません。
- 保持期間 依存関係のキャッシュは 14 日後、アーティファクトとジョブのログは 7 日後、修復の記録は 90 日後、提案された修正は 365 日後に期限切れになります。
- スコープ付きの API キー API キーは、ほかの権限を選ばない限り読み取り専用で、SHA-256 ハッシュとして保存され、一度だけ表示されます。
- ワークスペースのロール Owner、Admin、Member の各ロールが、請求、メンバー、連携を管理できる人を決めます。
- サンドボックス化されたフォーク Latchkey CI では、フォークからのプルリクエストがアクセスできるのは GitHub と、固定された一連の公開パッケージレジストリだけです。
- ランナーの時間制限 起動から 8 時間たっても動いているランナーは、安全装置によって終了されます。

08 · GitHub App

## GitHub App の権限を、ひとつずつ

アプリが参照できるリポジトリはあなたが選び、アプリは Actions のシークレットを読む権限を持ちません。アプリが求めるすべての権限と、その理由を示します。

| 理由 | 権限 | アクセス |
| --- | --- | --- |
| ジョブを Latchkey のランナーで実行する | Organization self-hosted runners | 読み取りと書き込み |
| 実行とログを読み取る、あなたが依頼した実行を開始する、実行をキャンセルする | Actions | 読み取りと書き込み |
| ファイル、ブランチ、プルリクエスト (プルリクエストが変更するファイルの一覧を含む) を読み取り、変更をプルリクエストとして提案する | Contents, Workflows, Pull requests | 読み取りと書き込み |
| Latchkey CI の結果をコミットに報告し、GitHub Actions から移行する間は、コミットのチェックを読み取る | Checks | 読み取りと書き込み |
| マージキューが作る各グループを確認し、ワークフローファイルが実行されるグループを Latchkey CI でビルドできるようにする | Merge queues | 読み取り |
| 組織のプラン、Actions の使用量、GitHub ホスト型ランナー、メンバーを読み取る | Organization plan, Organization administration, Members | 読み取り |
| リポジトリの基本情報を読み取る | Metadata | 読み取り |
| Latchkey がリポジトリに作成した webhook を削除する | Repository hooks | 読み取りと書き込み |
| 現在、Latchkey のどの機能でも使われていません | Administration, Organization hooks | 読み取りと書き込み、未使用 |
| 現在、Latchkey のどの機能でも使われていません | Artifact metadata | 読み取り、未使用 |

Actions のシークレットの権限はありません。

## 報告とレビュー

### 脆弱性を見つけましたか?

[security@latchkey.dev](mailto:security@latchkey.dev) までメールでお知らせください。公開の issue ではなく、非公開でのご報告をお願いします。

- [security.txt](/.well-known/security.txt)

### セキュリティレビューを行っていますか?

詳細はすべてドキュメントにあります。

- [セキュリティアーキテクチャ](/documentation/security-architecture)
- [セキュリティと GitHub の権限](/documentation/security-and-permissions)

---

Latchkey is CI your coding agents can run, read and fix: a standalone CI/CD platform with self-heal, a CLI and an MCP server. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
