AI 同じ429なのに、正しい対処が真逆になる。4社のレート制限を1枚のレイヤーで受けた話 HTTP 429はレート制限。ところがOpenAI・Claude・Gemini・OpenRouterの4社では、同じ429でも正しい対処が真逆になります。Claudeの402、Geminiの分と日の二重枯れ、OpenRouterの上流混雑。1枚のレイヤーで受けた実装の記録です。 2026.08.11 AI
AI フォルダを消されたあと、settings.jsonをどう書き直したか。denyリストでは足りなかった Claude Codeにフォルダを消された後、settings.jsonを見直しました。denyリストの書き方には落とし穴があり、サンドボックスと承認は独立していません。実際の設定ファイルと、PreToolUseフックによる保護の実例を公開します。 2026.07.31 AI
AI Claude Codeにフォルダを消された。安全網は3枚あって、3枚とも素通りした Claude Codeでのバグ取り中に、Gitで追っていない内部資料フォルダを削除させてしまいました。サンドボックスもコマンド承認もGitも効かず、実際に助けたのはNAS宛のTime Machineでした。何がすり抜けたのかと、その後の対策を書きます。 2026.07.28 AI
AI error.messageは4社で揃っていた。なのに「何が起きたか」だけが揃わなかった OpenAI・Claude・Gemini・OpenRouterを1つのプラグインで叩くと、エラー本文の取り出しは4社同じなのに、種別フィールドがtype・status・codeへ四分五裂します。共通パーサーが書けず最深部がstriposに落ちた、実装の"その後"の記録です。 2026.07.24 AI
AI 施策が効いたのか、効かなかったのかが分からない|有効インストール10未満のプラグインで、計測の前提を間違えた話 OpenRouter の無料キー導線で AI チャットボットの初回の壁を下げましたが、有効インストールは10未満のまま動きません。効かなかったのではなく、効果を語れる母数も、どこで離脱したかを知る計測も持っていませんでした。個人開発の計測設計を実体験で書きます。 2026.06.15 AI
AI AI の返答を画面に出すとき、エスケープだけでは守れなかった話|DOM を直接組んで安全に表示する AI チャットボットで、LLM の出力をエスケープしたのに画面表示ですり抜けた経験を残します。AI の出力はユーザー入力と同じ外部入力です。innerHTML の二度パースという落とし穴と、DOM を直接組んで安全に描画する WordPress での直し方をまとめます。 2026.06.13 AI
AI ユーザーの API キーをどこに預かるか問題|WordPress プラグインで AES-256-GCM を使った話 自作 WordPress プラグインで、ユーザーの API キーを平文で持たず AES-256-GCM で暗号化保存した実装記録です。鍵は wp-config の salts から派生させて DB の外に置き、AAD でサイトに束縛。IV と認証タグのレイアウト、復号の段階フォールバック、salts 変更時の再入力動線まで、実コードで残します。 2026.06.11 AI
AI AI チャットボットを4社対応にした話|OpenAI・Claude・Gemini・OpenRouter の差を1枚の層で吸収した設計 自作 WordPress プラグインの AI チャットボットを OpenAI・Claude・Gemini・OpenRouter の4社対応にした設計記録です。認証・system の置き場所・レスポンス形・エラーを1枚の層に畳み、GPT-5 が temperature を弾く 400 を予防スキップと自動リトライで吸収した実装まで残します。 2026.06.10 AI
AI Brainfuck のベンチで AI が満点を取った、けれど「8 8」で正体が割れた話|EsoLang-Bench を Codex CLI で再現して見た、カンニングと本物の境目 難解言語ベンチ EsoLang-Bench を Codex CLI(gpt-5.5)で再現し、Brainfuck の Easy を3条件で測りました。答えを見せると満点でも未知入力「8 8」で空を返すカンニング、答えを隠しても満点だが本物、Medium は全条件0%。同じ100%の中身が正反対だった記録です。 2026.06.09 AI