事象
commandmate start --daemon --port 4000 等でフラグ指定起動すると、status / quickstart が報告する URL が実サーバーと食い違う。quickstart は誤ったポートでブラウザを開く。すべて無警告。
原因
起動フラグが永続化されず、後続コマンドが URL を「現在の .env」から再計算するため:
src/cli/commands/start.ts:233-256 — --port は子プロセスの env に渡すだけで、PID ファイルにも .env にも永続化しない
src/cli/utils/daemon.ts:206 — getStatus() は resolveServerEndpoint(this.getEffectiveEnv()) で .env から port/protocol を都度再計算
src/cli/commands/quickstart.ts:113-120 — ensureServerRunning は稼働検出時に getStatus()?.url を返し、その URL でブラウザを開く
src/cli/commands/update.ts:367-378 — フラグが再起動後に復元されないことをコメントで自認
失敗シナリオ
start --daemon --port 4000 で起動(実サーバーは :4000)
status → .env の CM_PORT(既定 3000)から http://127.0.0.1:3000 を表示
quickstart(npx 実行)→ 死んだ :3000 をブラウザで開く
--cert/--key(protocol)・--auth(scheme)でも同様に乖離する。
対策案
起動時の実効設定(port / protocol / auth)を PID ファイルまたは state ファイルへ永続化し、getStatus() はそれを優先して読む。稼働サーバーへの問い合わせ(version エンドポイント等)で実測するのも堅牢。
関連
優先度
中。
確信度
コード確認済み。
この Issue は #1337〜#1341 の真因分析から横展開した潜在バグ調査(2026-07-17)により検出。
事象
commandmate start --daemon --port 4000等でフラグ指定起動すると、status/quickstartが報告する URL が実サーバーと食い違う。quickstart は誤ったポートでブラウザを開く。すべて無警告。原因
起動フラグが永続化されず、後続コマンドが URL を「現在の .env」から再計算するため:
src/cli/commands/start.ts:233-256—--portは子プロセスの env に渡すだけで、PID ファイルにも .env にも永続化しないsrc/cli/utils/daemon.ts:206—getStatus()はresolveServerEndpoint(this.getEffectiveEnv())で .env から port/protocol を都度再計算src/cli/commands/quickstart.ts:113-120—ensureServerRunningは稼働検出時にgetStatus()?.urlを返し、その URL でブラウザを開くsrc/cli/commands/update.ts:367-378— フラグが再起動後に復元されないことをコメントで自認失敗シナリオ
start --daemon --port 4000で起動(実サーバーは :4000)status→.envのCM_PORT(既定 3000)からhttp://127.0.0.1:3000を表示quickstart(npx 実行)→ 死んだ :3000 をブラウザで開く--cert/--key(protocol)・--auth(scheme)でも同様に乖離する。対策案
起動時の実効設定(port / protocol / auth)を PID ファイルまたは state ファイルへ永続化し、
getStatus()はそれを優先して読む。稼働サーバーへの問い合わせ(version エンドポイント等)で実測するのも堅牢。関連
優先度
中。
確信度
コード確認済み。
この Issue は #1337〜#1341 の真因分析から横展開した潜在バグ調査(2026-07-17)により検出。