# Latchkey CLI の変更履歴

> Latchkey CLI の各リリースで追加、変更、修正された内容を、0.3.0 以降について新しい順に示します。

Source: https://latchkey.dev/ja/documentation/latchkey-cli-changelog

## Summary

- 0.3.0 以降の Latchkey CLI のすべてのリリースを新しい順に並べ、それぞれで追加、変更、修正された内容を示します。
- `latchkey version` は手元のバージョンを表示し、`npm install -g @latchkeydev/cli` は最新のバージョンにアップグレードします。

各エントリは、Latchkey CLI (`@latchkeydev/cli` とスタンドアロンの `latchkey` バイナリ) のリリースが、あなたとあなたのコーディングエージェントにとって何を変えたかを示し、公開された日の日付を UTC で記載しています。[CLI から単発のジョブを実行する](https://latchkey.dev/ja/documentation/latchkey-cli) では、現在の動作に沿ってコマンドを説明しています。

## 0.17.0

2026-11-13 にリリースされました。

### 追加

- `latchkey workflows rerun <run-id> --repository <owner/name>` は、Latchkey CI の実行のうち成功しなかったジョブを、それらのいずれかを必要とするすべてのジョブとともに、同じコミットでの同じ実行の新しい試行として再実行し、その試行と実行のページを出力します。成功したそれ以外のジョブは再び実行も課金もされず、コマンドは試行の完了を待ちません。承認が必要な環境に結び付いたジョブは、トライアル実行やトライアル中のパイプラインで保留されない限り、承認を待ちます。ただし、その環境がその実行を受け付けない場合は待ちません。コマンドは、承認が必要なそれらの環境を、Latchkey が以前の試行からまだ読み取れる範囲で stderr に示します。`--output json` では、`run_id`、`attempt`、`allocated`、`run_url`、`waits_for_approval` を持つオブジェクトを 1 つ出力し、その一覧がいずれかの環境を示すときは、`code` の `RERUN_NEEDS_APPROVAL` と、`message` にその文を含めます。拒否された場合は、拒否の文を stderr に出力して 1 で終了します。`runs:control` を持つキーが必要です。
- `latchkey workflows cancel <run-id> --repository <owner/name>` は、Latchkey CI の実行の現在の試行のうち終わっていないすべてのジョブを、`latchkey cancel` が使うのと同じキャンセルの経路でキャンセルし、まだ作成していなかったジョブは決して作成されません。その試行と実行のページを出力し、`--output json` では `run_id`、`attempt`、`cancel_requested`、`not_created`、`run_url` を持つオブジェクトを 1 つ出力します。拒否された場合は、拒否の文を stderr に出力して 1 で終了します。`runs:control` を持つキーが必要です。
- `latchkey run` と `latchkey preflight` は、ジョブを開始するときのバッチ (`--batch` または `LATCHKEY_BATCH` で指定したもの) に予算がない場合、それを設定するコマンド (`latchkey budget set <batch> <dollars>`) とともに、そのことを stderr に示すようになりました。ジョブはそのまま開始されます。Latchkey が予算またはバッチの費用を読み取れなかった場合は、バッチに予算があるかもしれないため何も示さず、`latchkey preflight --batch-budget` は決してそれを示しません。`--output json` では `latchkey run` はこの行を出力せず、`created` イベントの新しい `batch_budget_status` が `set`、`none`、`unread` のいずれかになり、ジョブにバッチがない場合は null になります。

### 変更

- 同梱のスキルに、`latchkey workflows rerun` と `latchkey workflows cancel`、および MCP ツールの `rerun_run` と `cancel_run` が記載されました。これまでは、実行の ID を受け取る `latchkey` コマンドはなく、実行全体をキャンセルできるキーはないと記載していました。
- 同梱のスキルは、`heals` のエントリのうち `stage` が 3 未満で `category` が `flaky_test` のものは自己修復の不安定なテストの再実行で、失敗したステップを変更せずにもう一度実行したものであり、その `outcome` の `fixed` は再実行が成功したことを意味し、何かが修正されたことは意味しないと記載するようになりました。

### 修正

- `latchkey workflows --help` と同梱のスキルは、`latchkey workflows run` が開始したジョブで承認が必要な環境に結び付いたものについて、トライアル実行やトライアル中のパイプラインで保留されない限り承認を待ち、その環境がその実行を受け付けない場合は待たない、と記載するようになりました。これまでは、トライアル実行だけを例外としていました。

## 0.16.0

2026-11-11 にリリースされました。

### 追加

- `latchkey preflight --workflow <file> --repository <owner/name>` は、1 つのワークフローファイルのジョブを、Latchkey がコンパイルするとおりに、コミットやプッシュの前に、現在のままの作業ツリーで実行します。リポジトリは `latchkey run` のルールで最上位から丸ごとパックされ、変更は `HEAD` と、`origin/HEAD` が示すデフォルトブランチとのマージベースを基準に、このクローンが最後にフェッチした状態で測られます。ランナーが起動する前に、各ジョブが判定されます。書かれたとおりに実行される、ドライランを実行する、自身の条件または必要とするジョブのためにスキップされる、開始前に失敗する、または理由付きで実行されない、のいずれかです。たとえばシークレットを読み取るジョブは、プリフライトにはシークレットが渡されないため実行されません。プリフライトはチェックを書き込まず、プルリクエストを作成せず、自己修復を開始せず、キャッシュエントリを保存しません。どのジョブも失敗せず、実行されないまま残ったジョブがなく、ジョブが 1 つ以上実行されたときだけ 0 で終了し、実行されないジョブを残したか、どのジョブも実行しなかった場合で、実行したすべてのジョブが成功したか、自身の条件または必要とするジョブのためにスキップされたときだけ 195 で終了します。それ以外は `latchkey preflight --help` に記載されています。`--output json` では、実行が終わった時点でオブジェクトを 1 つ出力します。git が変更の内容を示せない場合は `CLI_GIT_UNREADABLE` で拒否され、何も送信されません。`jobs:run` を持つキーと、Latchkey CI に接続されたリポジトリが必要です。

### 変更

- `latchkey wait` は、自己修復について `judged step 3's failure flaky and re-ran the step unchanged` と出力し、続けて `it passed` と出力するか、`re-ran step 3 unchanged in case its failure was flaky` と出力し、続けて `the re-run did not make the step pass` と出力することがあります。これまでは、自己修復がそのステップを修正した、または修正できなかったと出力していました。`Self-heal` の行は `latchkey status` でも同じことを示すことがあります。
- 同梱のスキルに、`latchkey preflight` と、それが返す実行 (`latchkey workflows list` には一覧表示されません) が記載されました。また、`Latchkey / ci.yml / test` のようなジョブ自身のチェックは、ジョブが待機中または実行中の間、キュー待ちまたは進行中と表示されることがあると記載されました。これまでは、Latchkey は保留中のチェックを書き込まないと記載していました。
- `lk_dev_` で始まるキーは Latchkey の開発環境のキーで、本番の API (`api.latchkey.dev` または `latchkey.dev`) に送られることはなくなりました。コマンドは何かを送る前に止まり、`CLI_API_KEY_WRONG_ENVIRONMENT` で 1 で終了します。`lk_live_` でも `lk_dev_` でも始まらないキーは、これまでどおり警告されるだけです。

### 修正

- `latchkey run` が git の追跡しているファイルを読み取るとき、git のファイルシステムモニターを `false` ではなく空に設定するようになりました。2.36 より前の git は `false` を `PATH` から見つけたプログラムとして実行し、相対パスのエントリがパック対象のリポジトリの中にあるものを見つけることがあるためです。`git` という名前のディレクトリが `PATH` にあっても、この読み取りが止まることはなくなりました。また Windows では、名前が大文字小文字を問わず `GIT_` または `LATCHKEY_` で始まる変数は、すべて git の環境から除かれます。
- README と同梱のスキルは、圧縮時のサイズの上限を、CLI が常に守ってきた上限である 200 MiB と記載するようになりました。これまでは 200 MB と記載していました。
- 同梱のスキルは、ワークフローファイルの `concurrency:` グループで保留されたジョブ (`JOB_HELD_IN_GROUP`) について、新しい実行が先にそのグループに加わると開始されずに終了することがあると記載するようになりました。これまでは開始されずに終了すると記載していました。Latchkey が保留されたジョブを終了する前にその新しい実行がキャンセルされると、そのジョブは待ち続けます。
- `--token`、`LATCHKEY_TOKEN`、保存された設定のいずれから読んだ API キーも、確認して送る前に前後のスペース、タブ、改行が取り除かれるようになり、`latchkey login --token` は前後の空白を取り除いたキーを保存し、キーが空白だけの場合は `Empty API key.` で止まって 2 で終了します。これまでは 1 で終了していました。末尾に改行のあるキー (たとえば末尾に改行を付けて設定した `LATCHKEY_TOKEN`) で、コマンドが `invalid authorization header` で止まることはなくなりました。また、前に空白のある `lk_live_` のキーに、`lk_live_` で始まらないという警告が出ることもなくなりました。

## 0.15.0

2026-11-09 にリリースされました。

### 追加

- `latchkey workflows list --repository <owner/name>` に `--commit <sha>` または `--pr <number>` を付けると、完全な ID で指定したコミットの Latchkey CI の実行、または過去 90 日間のプルリクエストの実行を、新しい順に一覧にします。`--output json` では `repository`、`runs`、`truncated` を持つ 1 つのオブジェクトを出力し、各実行は MCP ツール `get_run_status` が返すオブジェクトです。実行が 50 件を超えると `LIST_TRUNCATED` で 1 で終了しますが、`--allow-truncated` を付けると新しい 50 件を取ります。`jobs:read` を持つキーが必要です。
- `latchkey wait --commit <sha>` と `latchkey wait --pr <number>` に `--repository <owner/name>` を付けると、ジョブではなく Latchkey CI の実行を待ちます。対象は、完全な ID で指定したコミットの実行、またはプルリクエストの最新のコミットでの実行です。実行が終わると一覧の表を出力し、すべてが成功したかスキップされた場合は 0、そうでなければ 1 で終了します。`--output json` では、実行ごとに `run_ended` イベントを 1 つ出力し、その後に `summary` イベントを出力します。リポジトリが Latchkey CI に接続されていない場合、またはどのワークフローファイルも一致しなかったために追跡するすべての実行がジョブなしで終わった場合は `RUN_NOT_EXPECTED` で 194 で終了し、あきらめる前の最後の確認が、Latchkey がワークスペースごとに同時に保持する待機の上限に達していた場合は `RUN_WAIT_LIMIT_REACHED` で 197 で終了します。

### 変更

- コマンドはキーを送る前に、キーの送り先のホストを示す `Latchkey API: <host>` を stderr に出力します。1 つのプロセスにつき 1 回、json モードでも出力するため、別の環境を指したキーは、何かが応答する前に分かります。`latchkey run` と `latchkey watch` では、`--quiet` を付けるとこの行は出力されません。
- 同梱のスキルに、`latchkey workflows list` と `latchkey wait --commit` または `--pr`、および MCP ツール `list_runs` と `wait_run` で、コミットやプルリクエストの実行を見つける方法が記載されました。
- `latchkey watch --help` に、同梱のスキルがすでに記載していた例外が記載されました。GitHub Actions では、ワークフローに未解決の不安定なテストの検出がある間に Latchkey が許可する、失敗したテストの 1 回の再実行は、Latchkey がテストランナーのレポートから失敗したテストを読み取れ、その再実行が同じように失敗した場合はエスカレーションされず、その実行は 1 つの ID で 1 回だけ表示されます。

## 0.14.0

2026-11-06 にリリースされました。

### 変更

- `latchkey migrate plan` は、すでにトライアル中のパイプラインを `On trial` と表示するようになりました (以前は `Stays` と表示していました)。また、ヘルプには `latchkey migrate apply` にアドバイザリーモードのリポジトリが必要とは書かれなくなりました。必要なのは Latchkey CI に接続されたリポジトリです。Latchkey は、どのバージョンの CLI からでもそのような適用を開きます。同梱のスキルの `migrate apply` の拒否の一覧も、アドバイザリーモードでないリポジトリの代わりに、すでにトライアル中のパイプラインを移す計画を挙げるようになりました。
- `latchkey watch --help` と同梱のスキルに、`latchkey watch` は自己修復が記録したものの修正しなかった失敗をポーリングし、ジョブ (Latchkey on GH では実行) ごとに最初の新しい失敗を引き渡すこと、そして自己修復が読み取りを拒否したステップの失敗には根本原因も失敗したファイルも付かないことが記載されました。また、エージェントに引き渡すプロンプトは、自己修復が失敗を記録したものの修正しなかったこと、そして `get_failure_bundle` からは Latchkey が保持している範囲でその失敗の内容が返ることを伝えるようになりました。変わったのは文言だけで、`watch` は、Latchkey がどのバージョンの CLI にも返す一覧から、0.13.0 と同じ規則で引き渡す失敗を選びます。

## 0.13.0

2026-11-04 にリリースされました。

### 追加

- `latchkey list --state active` は、まだ終わっていないジョブだけを一覧にします。キューにある、プロビジョニング中、または実行中のジョブを新しい順に最大 100 件表示し、それより新しく終了したジョブがいくつあっても、それらに押し出されることはありません。`--batch` で絞り込めます。ページ単位ではなく一度に全体を読むため、`--before` と `--limit` は拒否されます。`--output json` では `jobs` と `truncated` を出力し、後者はまだ終わっていないジョブが 100 件を超えたときに true になります。テキストでは stderr の 1 行でそれを知らせます。まだ終わっていないジョブを読めない Latchkey API は、すべての状態のジョブを返してしまうため、`CLI_LIST_FILTER_UNSUPPORTED` で拒否され、何も一覧に表示されません。デフォルトの `--state all` は、これまでどおりすべてのジョブを一覧にします。

### 変更

- 同梱のスキルに、`latchkey list --state active` でまだ終わっていないジョブを読む方法が記載され、`CLI_LIST_FILTER_UNSUPPORTED` の行にも `--state active` が記載されました。

## 0.12.0

2026-11-04 にリリースされました。

### 変更

- `latchkey run` が空のディレクトリを拒否するとき、どうすればよいかを示すようになりました。プロジェクトのディレクトリから実行するか、ファイルを必要としないコマンドには `--no-context` を渡します。同梱のスキルの `CLI_CONTEXT_EMPTY` の行にも、このフラグが記載されました。
- `--output json` では、`latchkey list`、`latchkey batch show`、`latchkey status` は常に `run_id` (ジョブが属する Latchkey CI の実行) と `served_by` (ジョブがランナーを得た方法で、`warm`、`parked`、`cold_start` のいずれか) を含み、Latchkey が値を送らない場合はそれぞれ `null` になります。0.4.0 以降の CLI は、Latchkey が送れば両方をすでに出力します。テキスト出力は変わっていません。
- 同梱のスキルに、スイートはパッケージ自身の `test` スクリプトを通して分割すること (`npm test -- --shard=2/4`)、そうするとすべてのシャードで CI と同じようにパッケージの `pretest` のステップが実行されることが記載されました。また、Latchkey CI への移行も扱うようになりました。実行が読み取るのは Latchkey に設定されたシークレットだけで、同じ名前の GitHub のシークレットは決して読み取らないため、切り替えのプルリクエストをマージする前にオーナーまたは管理者がシークレットを転送すること、そしてマージ後は GitHub Actions がそのパイプラインを実行しなくなるため、移行したパイプラインはコミットの Latchkey チェック、`get_run_status`、`latchkey list` で読み取ることです。
- 同梱のスキルで、ワークフローファイルが実行されるイベントに `merge_group` が加わりました。マージキューが作る各グループで実行され、グループのマージ先のブランチで照合されます。

## 0.11.0

2026-11-03 にリリースされました。

### 変更

- `latchkey migrate plan` は、移行するジョブのうち環境に結び付いたものについて、パイプラインがライブで実行されるようになるとオーナーまたは管理者の承認を待つと示すようになりました。以前はライブ実行で待つと示していました。Latchkey CI に移ったリポジトリでは、パイプラインが置き換える GitHub Actions ファイルがまだコミットにある間、そのパイプラインはライブ実行の中でもトライアル中になります。
- 同梱のスキルに、`failure_explanation` は、`failure_reason` が `null` のまま失敗したワークフローファイルのジョブについて、最初に失敗したステップと、そのステップに終了コードがあればその終了コードを示すこと、そして CLI が書き込めなかった出力は CLI の終了コードを決して変えないことが記載されました。また、ライブ実行の中のトライアル中のパイプラインも扱うようになりました。そのジョブで `advisory:` が何をするか、保留されたジョブの `failure_explanation` が `Held on trial:` で始まること、`list_trial_verdicts` の各エントリが比較するトライアル中のパイプラインを `workflow_path` で示すこと、そして `get_run_status` が、実行のパイプラインの一部がトライアル中に実行された理由を `trial` で示すことです。

### 修正

- リダイレクトした stdout や stderr の先のディスクがいっぱいになっても、CLI が 1 で終了することはなくなりました。1 は失敗したジョブと読まれる終了コードです。どちらかのストリームに書き込めないとき、CLI は本来返すはずだった終了コードで終了します。stdout の残りの出力は破棄し、読み手がいなくなった場合 (`| head`) を除いて、そのことを stderr で 1 回だけ知らせます。stderr に書き込めない出力は何も言わずに破棄します。書き込めなかったログはジョブに残っており、`latchkey logs <id>` でもう一度読み取れます。

## 0.10.0

2026-11-02 にリリースされました。

### 追加

- `latchkey workflows run <workflow> --repository <owner/name>` は、`on: workflow_dispatch` を宣言した Latchkey CI のワークフローファイルの実行を、リポジトリのデフォルトブランチ、または `--ref` で指定したブランチやタグで開始します。ファイルの入力は `--input <name=value>` で渡します。実行の完了を待たずに実行のページへのリンクを表示し、もう一度実行すると 2 回目の実行が開始され、それも別に課金されます。キーには `workflows:run` スコープが必要です。入力は実行に記録されてそのページに表示され、ジョブのログでも隠されません。そのため、トークンやパスワードを入力に入れないでください。
- `latchkey budget set <batch> <dollars> --max-concurrent <n>` は、バッチのジョブのうち同時に実行される数を、1 から 1000 までの整数で制限します。残りのジョブはキューで待ち、バッチに空きができると開始されます。API キーはバッチの最初の上限を設定するか、上限を下げることはできますが、上げることや外すことはできません。`latchkey budget show` は上限を表示します。

### 変更

- `latchkey status` は、ジョブで失敗を修正した、または修正できなかった自己修復の試行ごとに Self-heal 行を表示し、`latchkey run` と `latchkey wait` は、ジョブの結果の後にそれぞれを 1 行で表示します。自己修復のエージェントが修正を報告したもののジョブが成功せずに終わった場合、その行は修正が行われたとは示さず、報告されたと示します。`--output json` では、`run` の `complete` イベントと、`wait` の `ended` と `summary` のイベントが、ジョブの `heals` リストを `status` が出力するとおりに含みます。
- 同梱のスキルが、`latchkey workflows run` または `run_workflow` MCP ツールでワークフローファイルを開始する方法、バッチの上限でまとまった数のジョブのペースを調整する方法、ワークスペースの上限近くでバッチのジョブが Latchkey CI のジョブの後ろで待つことがある理由、MCP で自己修復レコードとトライアル実行の判定を読む方法 (`list_heals`、`get_heal`、`list_trial_verdicts`)、テストスイートをマトリクスのレグに分割する方法、そして自己修復がアップロードされた作業ツリーから読む内容を扱うようになりました。
- npm パッケージのホームページが Latchkey CLI のドキュメントページになり、その README からこの変更履歴にリンクするようになりました。

## 0.9.0

2026-10-28 にリリースされました。

### 追加

- `latchkey oidc request-token --audience <audience>` は、Latchkey CI の実行のジョブの中から、クラウド用の短期間有効な ID トークンを取得します。トークンを出力するか、`--out <file>` を付けると所有者だけが読めるファイルに書き込みます。`latchkey cache` と同じくジョブのランナーと通信するため、API キーは不要です。
- `latchkey validate <file>` は、Latchkey が実行のためにコンパイルするのと同じ方法でワークフローファイルを確認し、何も開始しません。拒否されたファイルでは最初の拒否がその行とともに表示され、コンパイルできたファイルでは、そのジョブと、そのファイルの 1 回の実行にかかりうる最大のコストが定価で表示されます。ファイルがコンパイルできれば 0 で、拒否されれば 1 で終了します。

### 変更

- スタンドアロンのバイナリに Node 24 が組み込まれるようになったため、macOS 用のバイナリには macOS 13.5 以降が必要です。それより古い macOS では、npm でインストールしてください。
- `latchkey environments list` に Approval 列が加わり、環境のジョブがオーナーまたは管理者による承認を待つかどうかを示します。
- `latchkey migrate plan` は、移行するジョブのうち環境に結び付いたものが、ライブ実行で承認を待つことになる場合にそれを示します。また、GitHub Actions に残るものの、移行するパイプラインの後に実行されるパイプラインについては、切り替えのプルリクエストがマージされると実行されなくなるのか、実行される回数が減るのかを示します。
- `.` または `..` だけの名前のバッチは、バッチ名を受け取るすべてのコマンドで拒否されます (exit 2)。

### 修正

- `--env` で `__proto__` という名前の変数を渡すと、破棄されずにジョブと一緒に送られるようになりました。

## 0.8.0

2026-10-27 にリリースされました。

### 変更

- バッチ名に `/` や `%` を含めることはできなくなりました。`latchkey run`、`latchkey list`、`latchkey wait` は、`LATCHKEY_BATCH` で設定されたものも含め、そのような名前を Latchkey に届く前に拒否するようになりました (exit 2)。`latchkey budget` と `latchkey batch show` はすでにそうしていました。

## 0.7.0

2026-10-26 にリリースされました。

### 変更

- `latchkey migrate plan` は、ドライランのコマンドをプランが拒否したステップに印を付けます。その "Needs a person" の行が理由を示し、ワークフローファイルが実行できるコマンドで答えるまで、その項目は未解決のまま残ります。
- `latchkey migrate plan --answers <file>` の回答ファイルでは、`dry_run` の回答を `dry_run_command` とともに指定できます。プランはそれを、回答されたステップの代わりにトライアル実行用のステップとして書き込みます。
- 同梱のスキルが、トライアル実行 (ジョブとステップの `advisory:`)、ワークフローファイルの `concurrency:` グループ、そして `latchkey/artifact-upload` と `latchkey/artifact-download` のステップを扱うようになりました。

## 0.6.0

2026-10-24 にリリースされました。

### 追加

- `latchkey wait` は、指定したジョブ、または `--batch <name>` を付けたときはバッチのすべてのジョブが終了するまで待ちます。ジョブが終わるたびにその結果を表示し、最後に状態、終了コード、実行時間、コスト、バッチの表を表示します。すべてのジョブが 0 で終了したときだけ 0 で終了し、Ctrl-C で止まるのは待機だけで、ジョブが止まることはありません。
- `latchkey batch show <name>` は 1 つのバッチを表示します。その予算、そのジョブに定価でかかった費用、状態ごとのジョブ、キュー内のジョブが待っている理由です。`latchkey budget show <batch>` は予算と支出だけを表示します。
- `latchkey environments list --repository <owner/name>` は、リポジトリの各環境が受け付けるブランチを一覧表示します。
- `latchkey list` は、1 つのバッチのジョブに絞る `--batch <name>` と、さらに前へページをさかのぼる `--before <value>` を受け付け、COST 列を表示するようになりました。また、`latchkey status` は終了したジョブのコストを表示します。
- より新しい CLI が出ていると、テキストを出力するコマンドが stderr でそれを知らせます。知らせるのは 1 日に 1 回までで、CI の中では知らせません。`LATCHKEY_NO_UPDATE_NOTICE` を設定するとオフになります。

### 変更

- git の作業ツリーの中では、`latchkey run` は git が追跡しているすべてのファイルを、`.gitignore` のパターンに一致するものも含めて、新しいクローンと同じようにパックします。クレデンシャルの拒否リスト、`--exclude`、`.latchkeyignore` は引き続き適用され、`--no-git-index` を付けると `.gitignore` ファイルだけに従ってパックします。
- すべての拒否にコードが付くようになりました。`--output json` を付けると、拒否されたコマンドはそのコードを含むオブジェクトを 1 つ出力します。同梱のスキルにはすべてのコードが載っています。
- `latchkey run` は先頭の `bash -c` や `sh -c` を拒否します (exit 2)。そのシェルはスクリプトの最初の単語しか実行しないためです。代わりに、スクリプトを引用符で囲んだ 1 つの引数として渡してください。

## 0.5.0

2026-10-24 にリリースされました。

### 追加

- `latchkey artifact upload` と `latchkey artifact download` は、1 つの Latchkey CI の実行のジョブ間でファイルを渡します。アップロードやダウンロードが失敗すると終了コード 1 で終わり、ステップが失敗します。また、アップロードでは `.env` のようなドットファイルは、`--include-hidden-files` を指定しない限り含まれません。
- `latchkey migrate plan <owner/name>` は、リポジトリの GitHub Actions のワークフローファイルを読み取り、Latchkey CI へ移行するためのプランを、回答が必要な各項目とともに表示します。`latchkey migrate apply` は Latchkey CI のワークフローファイルを追加する 1 つのプルリクエストを開き、`latchkey migrate status` はその状況を表示します。
- `latchkey steps` は、ワークフローファイルが `uses: latchkey/<name>@<version>` で指定できる Latchkey のステップを、その入力と既定値とともに一覧表示します。

### 変更

- オーナーまたは管理者が環境に対して実行を却下したジョブは、`latchkey run` と `latchkey logs --follow` で 130 で終了します。修正すべき失敗ではなく、停止として扱われます。

## 0.4.1

2026-10-19 にリリースされました。

### 修正

- ヘルプテキスト、README、同梱のスキルが 0.4.0 の動作と一致するようになりました。終了コードの一覧に `skipped` (exit 1) が載り、ログはジョブの開始から 7 日間読み取ることができ、`latchkey cache` は Latchkey CI のジョブか `latchkey run` のジョブの中でだけ動作します。
- `latchkey budget set` のヘルプに、API キーはバッチの最初の予算をワークスペースの支出上限まで設定できること、そして予算の引き上げはオーナーまたは管理者が Billing ページで行うことが記載されました。

## 0.4.0

2026-10-19 にリリースされました。

### 追加

- `latchkey run --context <dir>` は、現在のディレクトリの代わりに別のディレクトリをパックし、`--exclude <pattern>` はファイルを編集せずにパスを除外します。`--exclude` のどのパターンも、クレデンシャルの拒否リストが除外するファイルを送ることはできません。
- `latchkey run --budget <dollars>` は、ジョブの費用がその金額に達した時点でジョブを停止します (exit 3)。`--batch <name>` または `LATCHKEY_BATCH` はジョブをバッチに入れます。
- `latchkey budget set <batch> <dollars>` はバッチに上限を設けます。バッチの予算で拒否された `latchkey run` は 193 で終了し、ジョブを作成しません。
- `latchkey cache restore` と `latchkey cache save` は、ジョブの中からキャッシュエントリを復元、保存します。キャッシュがどんな状態でも、ジョブが失敗することはありません。
- `latchkey secrets set <name>` は、ワークフローのステップが読み取れるシークレットを、ワークスペース全体または 1 つのリポジトリに設定します。値はパイプか非表示のプロンプトから読み取られ、コマンドラインから受け取ることはありません。

### 変更

- `latchkey run` はダッシュボードにある各ジョブのページへのリンクを表示し、`latchkey watch` は失敗を、その Latchkey の実行ページにリンクします。
- `latchkey status` は、Latchkey から送られてきたときに、より多くの情報を表示します。ワークスペースの上限に対する実行中とキュー内のジョブ数、キュー内のジョブより前にあるジョブとそのジョブが待っている理由、これまでのコスト、ジョブのバッチ、キー、予算、最後に出力した時刻、そして何がジョブを終わらせたかです。`latchkey list` には BATCH 列と KEY 列が加わります。
- `--timeout` は 3 時間まで受け付けるようになり、ジョブのログはジョブの開始から 7 日間読み取ることができます。
- `latchkey run --detach` は、送信の時点でジョブがすでに終了していた場合、ジョブに対応する終了コードで終了します。`skipped` のジョブは 1 で終了し、`--output json` のすべてのイベントに `at` が付きます。

### 修正

- Latchkey からターミナルに届くテキストからは、制御文字、テキストの方向を変える文字、目に見えない書式文字が取り除かれます。また、ジョブ自身が報告した失敗の理由は、ジョブ自身の言葉として表示されます。

## 0.3.0

2026-08-15 にリリースされました。

### 追加

- `latchkey list` は、ワークスペースの最近のジョブを、まだ実行中のものも含めて新しい順に一覧表示します。スクロールして消えたジョブ ID も取り戻せます。

### 変更

- `latchkey watch` は、自己修復が記録したものの修正しなかった `latchkey run` のジョブも報告するようになり、表示するすべての失敗には、記録されていれば根本原因と失敗したファイルが付きます。

### 修正

- `latchkey run` や `latchkey logs --follow` のログのテールが、ネットワークエラーの繰り返しの後に諦めた場合、CLI はジョブをもう一度確認し、ジョブが終了していればジョブ自身の終了コードで終了するようになりました。以前は 1 で終了していました。
- 色付きの出力や ASCII 以外の出力が溜まっているときに、ログのテールがより速く追いつくようになりました。

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
