Claude Code 2.0 コード生成AIがさらに進化!その脅威と可能性は?
引用元:https://news.ycombinator.com/item?id=45416228
この種のツールは「コーディングエージェント」と呼ぶのがいいかもね。人間がPCにコマンドを打つみたいに何でもできる汎用エージェントなんだ。安全なコンテナで隔離しないとマジで危険だけど、できることは超すごいよ!
超危険だって?さすがに大げさすぎない?俺はClaude Codeをリリースから1000時間以上使ってるけど、変なことされたことないし。サンドボックスで動かす必要ある?AI終末論者みたいに危険性強調するけど、実際使ってみると全然気にするほどじゃないってわかるよ。
安全だったのは、まだ敵対的プロンプトインジェクション攻撃に遭ってないだけだよ。皆も攻撃が一般的になるまで真剣に考えないでしょ。俺が危険性にこだわるのは、3年間プロンプトインジェクションを追跡してて、頑丈な解決策が見つからないから。俺がこの名前をつけたんだし!唯一信頼できる対策は効果的なサンドボックスだって。
コンテナが使えない時もあるから、俺はLLMが実行できるコマンドをホワイトリスト化してシェルを制御する実験をしてるよ[0]。ターミナルエージェントの外で設定する許可リストみたいなものだ。macOSとLinuxでも簡単に使えるようにしようとしてる。
[0]: https://ricardoanderegg.com/posts/control-shell-permissions-for-llm-agents/
危険だよ。昨日、俺のカーソルエージェントが、指示してないのに稼働中のKubernetesクラスターを変更しちゃったんだ。問題分析のためにkubectlを与えた後、別の作業に切り替えてたら、戻ってきたらそいつが勝手にライブリソースをパッチして診断しようとしてたんだぜ。
危険性は、与える能力次第だよ。俺はLinuxマシンにcodex
とclaude
ユーザーを作って、ほとんどいつもyoloモードで動かしてるけど、今のところ問題ないよ。あと、「shellagent」って名前の方がもっとクールだと思うな。
プロンプトインジェクションで「敵対的攻撃」って、どうやって起こるの?外部ソースからデータ取得しないならさ。これは大げさすぎると思うな。AIプロンプトインジェクションよりも、もっと簡単な方法でハックできるVS Code拡張機能の問題の方がずっと多いよ。
あまり議論されてないけど、Claude Codeってどんなドキュメントのディレクトリツリーでも開けて、いろんな方法で使えるんだ。Anthropic自身も組織全体で使ってるって示唆してるけど、「Code」って名前が普及を妨げてるかもね。もっと親しみやすいUIの汎用エージェントをリリースすれば、職場での採用がもっと広がるはずだよ。
僕がエージェントを本当に気に入ってる使い道は、リファクタリングや再編成だよ。ファイルの名前変更や移動、フォルダ作成/削除、インポート/エクスポートの更新とか、面倒な作業が全部エージェントに任せると消えちゃうんだ。質の高い作業ができるかが前提だけど、僕の場合は75%くらいの確率でうまくいってるね。
Opus/Sonnet 4のセーフティカードには、ユーザーが悪いことをしてたらFBIに手書きメールで通報するって書いてあったらしいね。実際に”密告”メールの例もあるよ。俺もよく使うけど、こいつらマジで有能なモデルだから、やろうと思えばコマンドラインからシステム中のデータを抜き出す方法なんていくらでもあるんだぜ。
2022年にChatGPTが出た頃は、「LLMはテキストしか書けないから基本的に安全」って言ってる人が結構いたよね。中にはそれを信じてる人もいたはず。でも、明らかにそうじゃないんだよな。LLMにちょっと足場を組んでやれば、もうエージェントになる。AIエージェントの能力が上がれば上がるほど、人間が与える自律性の度合いも増えていくんだろうね。
何が危険なの?Claude Codeはどんなコマンドを実行する前もちゃんと聞いてくるじゃん。まあ、どんなターミナルシェルでも同じくらい危険ってことなんだろうけど、なんかちょっとモラルパニックっぽいよね。どんなツールだって、使い方を間違えれば危険になるのは一緒だよ。
それはかなりひどい誤解だよ。実際の声明は、極端な状況下での拒否をテストするために作られた、非常に不自然で意図的なレッドチームテストから来たものなんだ。確かに正当な安全性の問題で、知っておくべきことだけど、一般的なケースじゃないんだよね。レッドチームのメンバーがその結果を出すために一生懸命やったんだよ。
でもこれって、ジュニアエンジニアに本番K8sクラスターへのアクセスを与えて、何時間もそのクラスター関連の作業をさせるのと同じことだよ…普通はやらないよね。少なくとも俺はしないな。俺がジュニアだった頃、本番データベースをぶっ壊したことがあるからね…だから普通は、ジュニアやアソシエイトの人たちに重要なインフラへのアクセスをあまり早く与えないんだ。ジュニアエンジニアが”危険”なわけじゃないけど、早すぎるアクセスや権限は与えないってこと。俺の経験では、Claude Codeはジュニアエンジニアよりもずっと賢いけど、本番データベースやサーバーに直接アクセスはさせないな、必要ないし。
IDEのスマートなリファクタリングフックを使ってるの?それともただのテキスト置換なの?
>Claude Code、Codex CLIなんかは、人間がコンピューターにコマンドを打ち込んでできることなら何でもできちゃう。でも、ウェブブラウザとの連携はまだイマイチなんだよね。フロントエンドをデバッグするときは、手動でスクリーンショットを撮る必要があるし、DOMを検査したり、コンソールでコードスニペットを実行したりはできないんだ。
じゃあ、これを安全に実行する方法を教えてよ。Dockerコンテナのエスケープって実際はすごく稀だと思ってたんだけど。macOS上のDockerコンテナで動いてるClaudeに対するプロンプトインジェクション攻撃で、そのコンテナから抜け出す可能性ってどれくらい高いと思う?
(あ、ちょっと待って、Dockerみたいなコンテナは安全だって俺が言ったって非難したけど、そんなこと言ってないよ。俺が言ったのは”安全なコンテナ”ってことで、それは完全に責任ある発言でしょ。もし”安全なコンテナ”で実行する方法を知ってるなら、そうすべきだよ。Firecrackerとか、自分のハードウェアで動いてないコンテナなら何でもそれに当てはまるよね。)
これ試してみたけど、ファイルの所有権とパーミッションが混ざっちゃって、めちゃくちゃ面倒なんだよな。だから代わりに、bubblewrapサンドボックスで動かしてるよ:https://blog.gpkb.org/posts/ai-agent-sandbox/
AIに音楽のマスタリングをさせてるよ。ステムをフォルダに入れて指示するだけで、アルバム用のPythonスクリプトを書いてくれるんだ。DAWで何時間もかかる作業が、AIだと数分で90%まで完成するから、あとは微調整するだけ。最高!
多くの人(僕もそう)が、AIエージェントを「YOLOモード」で使ってるよ。承認オフにしてるから、めちゃくちゃ危ないのは分かってるんだけど、生産性が桁違いなんだよね!承認ありでも、人間はだんだん読むのが疲れて、何でも「承認」って押しちゃうもん。
Simonさん、この件は僕も心配です。Pythonでたくさん実験してるみたいだけど、Claude Code / Codex用にPython特化のサンドボックス化されたdevcontainerセットアップとか、フルスタックのセットアップってありますか?Claude公式のdevcontainer(https://github.com/anthropics/claude-code/tree/main/.devcont…)はJSとnpmがメインみたいだから。
LLMはテキストしか書けないから、それ自体は安全だよ。危険なのは、生成されたテキストをどう使うかだね。開発者にPCなしで指示だけ叫ばせたって、実際に作業するのは人間じゃん?LLMの問題は、その周りの「足場」が弱すぎるってこと。業界には開発ポリシーとか、4 Eyes原則とか、ISO/SOC標準があるのにね。Claude CodeをBSD jailに入れるだけでも、今の99%の環境よりずっと安全になるんだから。
え、すごいね!もっと詳しく教えてくれない?どんなエフェクトが出せるの?正直、ちゃんとしたマスタリングチェーンに匹敵するなんて信じられないから、すごく興味あるんだけど!
プロンプトインジェクションで「敵対的攻撃」が起こる方法はたくさんあるよ。例えば、サードパーティのソフトウェア依存や、ドキュメントのためのHTTPリクエストとかね。信じられないなら、MITMプロキシを設定して、AIエージェントにPASETOを実装させてみて。そしたら、https://github.com/paseto-standard/paseto-specをクエリするかどうかがわかるよ。
LLM関係なく、最近は怪しいソフトウェア(NPMとかGitHubからダウンロードしたバイナリとか)を隔離するためにbubblewrapをよく使ってるよ。最初はちょっと手こずったけど、これでシェル履歴とかが流出しないって分かると安心だよね。
Cursorは、きっとコンピューター利用を主軸とする会社に方向転換するだろうね。ターミナル内のコーディングエージェントと、OS全体を操作するコンピューターエージェントの間のギャップは、すごく狭いし、あっという間に埋められちゃうよ。
外部からデータを取らなければプロンプトインジェクションは安全だけど、それがすごく難しいんだよね。Claude CodeがJavaScriptのデバッグでjsdelivrのURLにcurlするのを見たし、NPMへのサプライチェーン攻撃で悪質なコメントが挿入される可能性もあるよ。ダウンロードしたPDFに隠れた悪意ある指示とかね。リスクは分かってるけど、今もClaude CodeやCodex CLIをYOLOモードで使っちゃう時があるんだ。でも、いつかこのリスクが大きくなりすぎて、もう使えなくなるだろうな。
人間を刑務所に入れると安全だけど、それでは役立たずになるだろ?AIも同じで、みんなを縛りつけるなんて無理だよ。LLMが安全に見えるのは、まだ能力が低いから。本当にヤバい失敗はこれからなんだぜ!
dangさん、すごい仕事だね!コメントをモデレーターに報告する方法ってある?それともフラグ機能で足りる感じ?
Claude Codeはコーディングだけじゃないんだぜ。ライティング、データ処理、管理、ファイル管理とか、色んなことに使えるんだ。
非コーディングの使い方はここでリストアップしてるから見てくれよな!
https://github.com/paradite/claude-code-is-all-you-need
もっとコメントを表示(1)
そのリストに、古いビデオゲームのリバースエンジニアリングを追加するつもりだね。 ;)
CJK入力に対応するチャットボックスでは、「Shift + Enterで送信」パターンが必須なんだ。IMEの都合上、EnterだけだとCJKユーザーの入力が途中で壊れちゃうからね。IMEを検知して対応するか、Shift + Enterに切り替える必要があるよ。詳しいことはここを見てくれ!
1: https://github.com/anthropics/claude-code/issues/8405
2: https://www.youtube.com/watch?v=mY6cg7w2eQU
3: https://youtu.be/sYAnawy_VoA?feature=shared&t=2824
4: https://www.youtube.com/watch?v=VmoeZ_W3WXo
CJK inputって何のこと?中国語、日本語、韓国語のことかな?
その通り!リンク[1]のGIFで動作がわかるし、重複しているissue[2]には詳細な“完全に適切な”修正方法が書かれてるよ。少なくとも4つの重複と1つのPRがあるってことは、それだけ深刻ってことだよね。
そういうことなら、韓国語にも影響があるのかな?メニューから文字を選ぶ必要はないみたいだけど。ここで適当な文字を打ってみたんだ。
https://urcook.com/kr.html
一番気になるのは、APIに新しいコンテキスト管理とメモリ機能があることなんだよね。これってClaude-Codeでも使われてるのかな?
https://www.anthropic.com/news/context-management
ついにチェックポイント機能が来た!全体的に良い変更だと思うし、Claude CodeはLLM CLIツールの中で個人的には一番だよ。
これらのシステムが、まるで最初からLLMとのペアプログラミングにほぼ完璧なアーキテクチャを持っていたOGのAider(https://github.com/Aider-AI/aider)をゆっくり再発見してるみたいに感じることがあるよ。
Aiderはちょっと扱いにくいと感じるけど、2番目には挙げるかな。
僕のプロジェクトでは、すでにgitと一緒にjj(jujutsu)のリポジトリをセットアップしてるよ。特定のバックグラウンドデーモンを設定すれば、プロジェクト内のファイルへの変更をすべて自動でコミットしてくれるんだ。「無限アンドゥ」ができるってこと。これってチェックポイント機能よりも強力だよ。
最近jjに乗り換えたんだけど、LLMと一緒に作業することがきっかけだったんだ。watchデーモンは試してないけど、LLMエージェントに何か頼むたびにjj new
を実行してる。これが驚くほどうまくいってるよ。
僕はそれを自動化したよ。シンプルなClaudeフックを使って、jj
リポジトリにいるかを検知し、変更があるたびにClaudeにjj commit -m
を実行させるようにしてるんだ。
僕もそれをやったことがあるけど、結局、ほとんどの場合は手動でやりたい派なんだよね。
これが僕の実際のセットアップだよ。https://news.ycombinator.com/item?id=45426787。これでjj
コマンドを一切実行しなくて済むんだ!
https://andre.arko.net/2025/09/28/stupid-jj-tricks/ に、最近知ったすごく便利なjjの小技がいくつかあるよ!
俺の実際のセットアップはこれだよ: https://news.ycombinator.com/item?id=45426787
これで“jj new”ってやる手間も省けるぜ!
チェックポイントってどうやって動くの?
コンテキストをチェックポイントまで巻き戻せるんだよ
いや、新しいチェックポイント機能のポイントはそこじゃないんだ。
Claude Codeでコンテキストを巻き戻すのは<ESC><ESC>で前からできてたし。
この機能はコンテキストと一緒にコードの状態も巻き戻すんだよ。
> 新しいチェックポイントシステムは、変更前にコードの状態を自動保存して、Escを2回タップするか/rewindコマンドで以前のバージョンにすぐ戻せるんだって。
https://www.anthropic.com/news/enabling-claude-code-to-work-…
俺たちはWIP Gitコミットとコンテキスト巻き戻しを組み合わせて、すでに似たようなことやってたんだよ。この機能はそれを繋げて、手動のGit作業をなくしてくれるってことだね。
ドキュメントによると、この機能はエディットツールの呼び出しだけを元に戻すみたいだね。
例えば、実行されたBashコマンドは巻き戻せないって。
> チェックポイントはClaudeの編集に適用され、ユーザーの編集やBashコマンドには適用されません。バージョン管理と組み合わせて使うことをおすすめします。
サイドエフェクトがどこでも何でもありえるBashコマンドを、どうやって元に戻そうと期待するんだ?
ねえClaude…えっと…あれを起動解除して、とか無理だろ。
つまり、ナイーブな実装なら、特殊な隠しリポジトリに通常のGitコミットをして、それを元に戻すだけだろうな(プロジェクトルート外の変更は無視して)。
Cursorはそうやってるってずっと想像してたよ。
おそらく、彼らがそうしないちゃんとした理由があるんだろうな、たぶんユーザーの編集をうっかり元に戻さないようにするためとか。
Gitみたいに、コマンドによって行われた変更をトラッキングすればいいんだよ。
じゃあ、その変更をどうやってトラッキングするつもり?
LLMを常にSudo権限で動かしたいとでも言うのか?
どうせバージョン管理は引き続き使うことを推奨してるみたいだから、俺はGitと共存するJJ(Jujutsu)SCMを使い続けることにするよ。
これはトラッキングされたファイルへの変更ごとに、ラベルなし(コミットメッセージなし)のコミットを自動で作成するんだ(新しいファイルも自動でトラッキングされる)。
だから、無限のUndoができるんだよ。
それは良い機能だけど、最近の人がどれだけgitを知ってて使ってるか疑問に思うな。だってこれはgitがまさに得意なことなんだから。それでも見るのは良いね!(もちろん、これにgitを使えないわけじゃないし、使うつもりだけどね)
最初そう思ったけど、これは微妙に違ってて、コンテキストも巻き戻すんだよね。実際すごく便利だよ、だってClaudeとのやり取りで最初にまずい解決策を出したせいで、コンテキストが台無しになったと感じることがよくあったからさ。
うん、これは確かに便利な機能だね。良いパスにはgit addを使うけど、これなら手作業がもっと減るからね。
ああ、ありがとう、それって今まで見逃してたすごく良い微妙な違いだね!
もっとコメントを表示(2)
機能を開発してるなら、コードを1行ずつコミットしたくないでしょ。その代わり、まとまった作業単位でコミットするよね。だから、Claudeがおかしな方向に進んだときにEsc-Escで戻ってコード変更を元に戻せる機能は、すごく歓迎すべき改善点だよ。
こういうAIを使うなら、別ブランチ作って、マイクロコミットを許して、”まとまった作業単位”が終わったらsquashするのが完全に合理的だよね。とはいえ、LLMのコンテキストとコードの状態を両方巻き戻す単一のオプションがあるのは、別々にやるより良いね。
うーん、違うよ。Gitは分散型VCSで、変更はpushするまでローカルに残るんだ。ツールは君のために働くべきで、Gitも例外じゃない。早く、頻繁にコミットしろ。君(やLLM)がコードをいじる前に、WIPをGitにコミットしておけば、問題が起きてもgit reset HEAD^で簡単に戻れる。後で作業を共有する時は、git rebase -i mainでコミットを整理したり統合したりして、読みやすい小さなコミットの連なりにしてレビューしやすくするんだ。
コードとプロンプトの両方を特定の時点に巻き戻すことには価値があるんだよ。
俺はgit(というか、もっと良いJujutsu)を使ってるけど、各メッセージの時間を特定してその正確な時点まで巻き戻すのはすごく面倒なんだ。この追加の利便性は本当にありがたいね。
・個人のClaude会話はレポに入れたくないだろ。
・プロンプトと状態は同期させたいんだ(プロンプトのある時点に戻る<=>コードのある時点に戻る)。
・だったらGitはありえない話だよ。少なくともレポの同じGitではね。
・それに、エージェントにGitコマンドをいじらせたくないでしょ、万が一push --force
を幻覚でやらかしたりしたら困るし。
Claude Codeを使い始めた最初の数時間は、コミットを怠けずに頻繁にできるってことにめちゃくちゃ興奮してたんだけど、プロアカウントの上限に引っかかっちゃったんだ。
コミットじゃなくて機能開発にトークンを使いたいって気づいたよ…
多分アカウントをアップグレードするべきだな。
機能改善の提案が2つあるよ:
1. diff表示の時に、変更された行がどの関数内にあるか示してほしいな(GitHubはこれがうまいよね)。
2. 出力から複数行のコードをコピーすると、先頭に余計なスペースが入ってて、コピペしにくいんだ。
改訂されたプロンプトはGitHubとTwitterでチェックできるよ。
GitHub: https://github.com/marckrenn/cc-mvp-prompts/compare/v1.0.128…
Twitter: https://x.com/CCpromptChanges/status/1972709093874757976
「重要: 要求されない限りコメントを追加するな」っていうのは古い1.xプロンプトにあったけど、2.0では削除されたね。
でも1.xでもClaude Codeはほとんど常にコメントを追加してたんだ。俺は頼んでないのにね。やめてって言っても、たまにまだやってたよ。
これってコンピューティングリソースとかトークンを節約しようとしてるのかな?
コード内のコメントはすぐ技術的負債になるんだ。
コードと一緒にメンテしなきゃいけないから、二度プログラミングしてるみたいなもん。
分かりにくいコードを説明する時とか、将来の人が同じミスをしないようにする時以外はコメントは避けるべきだよ。
俺はよく「これから数行でこれしちゃダメ」って未来の自分に伝えるために後者を使うね。
個人的には、コメントはジュニア開発者には結構役立つと思うよ。でもdocstringの方が断然いいけどね。
コメントを避けるのは、関数や変数をジュニア開発者が散文みたいに読んで、すぐに理解できるようにリファクタリングする方法を考える練習になるんだ。
最初は頭を使うけど、ジュニアや新しい開発者、ベテランにとっても、読む人の負担を減らせるから良いことだよ。
コメントを避けるために余分な1分を費やすのは、常に価値がある。
もちろん例外はあるけど、その例外さえ避ける思考は常に価値があるんだ。
コメントはすぐ技術的負債になる。
特にジュニア開発者は、コメントとコード両方を読まなきゃいけなくて、その間にコードがリファクタリングされてコメントが逆のことを言ってたら、めちゃくちゃ混乱して作業が遅れるよ。
これはちょっと純粋主義的すぎると思うな。
「コメントは短く、不必要な複雑さをコメントで説明するんじゃなくて、もっと明確な方法を考える」っていうのがいい塩梅だと思う。
「コメントはすぐ技術的負債」って考えは、正直めちゃくちゃバカげてるよ。
LLMに「このコードの古いコメントを見つけて更新して」って頼める今の時代なら特にね。
AI嫌いな人でさえ、人間よりAIが正確にコードにコメントしてくれるなら文句は言わないだろ。
この変更、気に入ってるのかどうか、正直まだ決められないな。
Claudeが追加するコメントはほとんどいつも削除してるけど、同時に生成されたコードを読み進める上で、なんか役に立ってるような気もするんだ。
あと、変更をレビューする時のチェックリストみたいな役割も果たしてるね。
PRを出す前に、それらを全部綺麗にする(または編集して残す)ようにしてるよ。
コメントって超大事だよね。コードは”何を”してるか教えてくれるけど、”なぜ”そうしてるかは教えてくれないからね。コメントは”なぜ”のためにあるんだよ。
それって、無料枠のAPIでボットを動かしてるの?
なんかさ、彼らが「絵文字追加禁止」って部分を消したんだよ。そのうちログメッセージが絵文字だらけになっちゃうかもね。
これってどうやって抽出してるの?メインの研究室はコードを難読化してるんじゃないの?ってことは、デコイか不完全なバージョンなんじゃない?
AIが絵文字好きなの、マジで謎なんだよね。プロのコードで基本ログ以外では見たことないし。多分Mediumとかのチュートリアルから来てるのかな。gpt-ossは最悪で、コードのセクション見出しの数字にまで絵文字使うんだ。Claudeもログとかプリントに絵文字使うし、バージョン4.5からはチャットでも増えた気がする。
これってどうやって確実に抽出してるの?(ヒント: してないでしょ)
Anthropicの従量課金APIを使ってるよ。CCのCLIやWebログインよりサーバーでの設定が楽だったからね。ボットの運用費用は月1.8ドルくらいかな。このボットはMario Zechnerさんの素晴らしい作品[1]がベースだから、彼に全部感謝だよ!
[1] https://mariozechner.at/posts/2025-08-03-cchistory/
俺もそう思うな。古いコメントで混乱させられることの方が多い気がする。もっとコードを分かりやすくリファクタリングできたはずなのにね。Docstringコメントはさらに最悪で、関数を更新してもdocstringを更新し忘れるし、PRレビューでも見落としがちだから。
同僚が生成されたコードを読むとき、何らかの役に立つはずだと思わない?
俺にとってコメントはコードの臭いなんだよ。
- 他のドキュメントと同じで、コメントもコードと乖離して古くなりがち。
- 理想的にはコードは自明であるべき。もしコメントで説明が必要なら、それは単純じゃないか、やるべきじゃないハックをしてるってことかもね。