📑

Cursorエディタでターミナルが止まる件(Windows 11)

に公開

Cursorエディタでターミナルが止まる件(Windows 11)

はじめに

Cursorエディタを使用していると、Agent Modeでターミナルコマンドを実行した際に以下のような問題が発生することがあります:

  • ターミナルコマンドが実行されると、毎回レスポンスがなくなる
  • Stopボタンを押さないと進めない状態が続く
  • ターミナルがハングアップして作業が止まってしまう

私も同じ問題に悩まされていましたが、様々な記事やフォーラムの情報を参考にしながら、PowerShellのプロファイル設定を工夫することで解決できました。この記事では、その解決方法を共有します。

問題の概要

発生していた症状

  • CursorのAgent Modeでターミナルコマンドが実行されると、ターミナルがフリーズ
  • 毎回Stopボタンを押す必要がある
  • 作業効率が大幅に低下

対象環境

  • OS: Windows 11
  • エディタ: Cursorアプリ版
  • シェル: PowerShell

原因の特定

問題の原因は、CursorのAgent Modeで実行されるターミナルコマンドが、複雑なシェルプロンプトやインタラクティブな設定でハングアップしていることでした。

特に以下の要素が問題となっていました:

  • 複雑なPowerShellプロンプト設定
  • インタラクティブな確認ダイアログ
  • 環境変数の不適切な設定

解決方法

1. PowerShellプロファイルの確認

まず、現在のPowerShellプロファイルの状況を確認します。

Test-Path $PROFILE

結果が False の場合は、プロファイルファイルが存在しないことを意味します。

2. プロファイルファイルの作成

プロファイルファイルが存在しない場合は、新しく作成します。

New-Item -ItemType File -Path $PROFILE -Force

3. プロファイルファイルの編集

作成したプロファイルファイルを編集します。

notepad $PROFILE

4. 設定コードの追加

メモ帳が開いたら、以下のコードを貼り付けてください。

# Cursor Agent Mode Detection for Windows PowerShell
if ($env:npm_config_yes -eq 'true' -or $env:CI -or $env:NONINTERACTIVE) {
    $env:AGENT_MODE = 'true'
} else {
    $env:AGENT_MODE = 'false'
}

# Agent mode settings
if ($env:AGENT_MODE -eq 'true') {
    # Simple prompt for agent mode
    function prompt { 
        "PS $($PWD.Path.Split('\')[-1])> " 
    }
    
    # Disable interactive features
    $PSDefaultParameterValues['*:Confirm'] = $false
    $PSDefaultParameterValues['*:Force'] = $true
    
    # Set non-interactive environment
    $env:DEBIAN_FRONTEND = 'noninteractive'
    $env:NONINTERACTIVE = '1'
}

5. 設定の保存と反映

  1. Ctrl + S でファイルを保存
  2. メモ帳を閉じる
  3. PowerShellで設定を反映
. $PROFILE

設定の仕組み

Agent Mode検出の仕組み

設定では、以下の環境変数をチェックしてAgent Modeを検出しています:

  • $env:npm_config_yes -eq 'true': CursorのAgent Modeで設定される環境変数
  • $env:CI: CI環境の検出
  • $env:NONINTERACTIVE: 非インタラクティブモードの検出

これらの条件のいずれかに該当すると、AGENT_MODE=true が設定されます。

Agent Mode時の動作

Agent Modeが検出された場合、以下の設定が適用されます:

  • シンプルなプロンプト: 複雑なプロンプトを無効化し、ハングアップの原因を排除
  • 非インタラクティブモード: 確認ダイアログを自動で回避
  • パフォーマンス優先: ハングアップの原因となる処理を無効化

通常のターミナル使用時

通常のターミナル使用時は AGENT_MODE=false となるため、既存の設定がそのまま使用され、ユーザー体験に影響はありません。

動作確認

設定が正しく適用されているか確認しましょう。

# AGENT_MODE環境変数の確認
echo "AGENT_MODE: $env:AGENT_MODE"

# プロファイルの内容確認
Get-Content $PROFILE

通常のターミナルでは AGENT_MODE: false と表示されるはずです。

期待される効果

この設定により、以下の効果が期待できます:

  • Agent Modeでのターミナルハングアップが解消
  • Stopボタンを押す必要がなくなる
  • 通常のターミナル使用には影響なし
  • 作業効率の大幅な向上

トラブルシューティング

もし問題が続く場合は、以下の手順で確認してください。

1. 設定の再確認

Get-Content $PROFILE

設定したコードがすべて表示されることを確認してください。

2. 環境変数の確認

echo "npm_config_yes: $env:npm_config_yes"
echo "CI: $env:CI"
echo "AGENT_MODE: $env:AGENT_MODE"

3. プロファイルの再読み込み

. $PROFILE

まとめ

CursorエディタのAgent Modeで発生するターミナルフリーズ問題は、PowerShellのプロファイル設定を適切に構成することで解決できます。

この解決方法のポイントは:

  1. Agent Modeの自動検出: 環境変数による自動判定
  2. 条件分岐による設定: Agent Mode時のみ特別な設定を適用
  3. 通常使用への影響なし: 既存の設定を保持

この設定により、CursorのAgent Modeを快適に使用できるようになりました。

参考情報


同じ問題で悩んでいる方がいれば、この解決方法を試してみてください。

Discussion