Skip to content

fix(cli): --port 等の起動フラグが永続化されず status/quickstart の URL が実サーバーと乖離する #1355

Description

@Kewton

事象

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:206getStatus()resolveServerEndpoint(this.getEffectiveEnv()).env から port/protocol を都度再計算
  • src/cli/commands/quickstart.ts:113-120ensureServerRunning は稼働検出時に getStatus()?.url を返し、その URL でブラウザを開く
  • src/cli/commands/update.ts:367-378 — フラグが再起動後に復元されないことをコメントで自認

失敗シナリオ

  1. start --daemon --port 4000 で起動(実サーバーは :4000)
  2. status.envCM_PORT(既定 3000)から http://127.0.0.1:3000 を表示
  3. quickstart(npx 実行)→ 死んだ :3000 をブラウザで開く

--cert/--key(protocol)・--auth(scheme)でも同様に乖離する。

対策案

起動時の実効設定(port / protocol / auth)を PID ファイルまたは state ファイルへ永続化し、getStatus() はそれを優先して読む。稼働サーバーへの問い合わせ(version エンドポイント等)で実測するのも堅牢。

関連

優先度

中。

確信度

コード確認済み。


この Issue は #1337#1341 の真因分析から横展開した潜在バグ調査(2026-07-17)により検出。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions