## instinct(2026-06-18・win機で実証)

`~/.claude/scripts/run_x_search.py` を win機で動かす際の恒久知見。

### 踏んだ失敗
1. スクリプトが `/home/ubuntu/.hermes/auth.json`(shadow Linux パス)をハードコードしており win で FileNotFoundError
2. win には auth.json が**2つ**存在する:
- `C:\Users\jun\AppData\Local\hermes\auth.json` … HERMES_HOME正本だが `credential_pool.xai-oauth` が**空(0エントリ)**
- `C:\Users\jun\.hermes\auth.json` … xai-oauth **有効トークンあり**(label=loopback_pkce・access+refresh)
→ 「存在する最初のファイル」を選ぶと空の方を掴んで "credential not found" で落ちる
3. access_token は ~6h で失効。403 bad-credentials が出たら refresh_token でリフレッシュ必須
4. win の cp932 で絵文字(🔥等)が PARSE_ERR/UnicodeEncodeError → `python -X utf8` / `sys.stdout.reconfigure(encoding="utf-8")` で回避

### 恒久対策(実装済み・run_x_search.py を全面改修)
- `find_auth()` は存在チェックだけでなく **xai-oauth トークンを実際に持つ auth.json を優先選択**(`_has_xai_token()`)
- 401/403 で **refresh_token による自動リフレッシュ→1回だけ再試行**(auth.json へアトミック保存)
- `requests`(shadow) / `httpx`(win・`uvx --with httpx`) 両対応
- UTF-8 出力強制(cp932対策)
- モデルは `grok-4-latest`(旧 `grok-4.20-reasoning` から変更・環境変数 `XAI_X_SEARCH_MODEL` で上書き可)

### 実行コマンド(win)
```bash
PYTHONUTF8=1 uvx --with httpx python -X utf8 ~/.claude/scripts/run_x_search.py "クエリ"
```
実証: 1回目=自動リフレッシュ発火→正常応答 / 2回目=フレッシュトークンで即応答。両パス確認済み。

### 関連
- [[grok-hermes-x-search]] — xAI OAuth 再認証・トークンローテーション
- [[hermes-dual-home-windows]] — win機 HERMES_HOME=AppData\Local\hermes 正本
- [[instinct-xai-refresh-token-rotation]] — リフレッシュ時は新tokenを必ず保存