ニュースマクロスマートTVをVibeコーディングしたら、Claudeが台無しにした

スマートTVをVibeコーディングしたら、Claudeが台無しにした

著者: Decrypt·

重要ポイント

  • •ClaudeはFree My TVのインストーラをクリーンと検証し、以前の脱獄を示すdropbear SSHのフィンガープリントを検出したが、LGのDeveloper Modeを有効にするとユーザーのルート済み環境を含む開発者パーティションが消去される旨の警告はしなかった。
  • •消去により、2023年から動いていたHomebrew Channelと広告なしYouTubeが失われた。Claudeは後に両アプリを復旧させたが、root権限は回復できなかった。
  • •rootの永続化は不可能だった。テレビのファームウェアは2026年7月ビルドで、起動時の再ルートを可能にしていたcrashdエクスプロイトに対するLGの2024年4月のパッチより後だったためだ。
  • •Anthropicの安全システムは複数のClaudeモデルで再ルートのステップをブロックし、インターフェースは制限の緩い、より古く高価なモデルへの切り替えを提案した。
  • •Free My TVランチャーは宣伝どおりの見た目でインストール・動作したが、恒久的な自動起動にはrootが必要なため、手動で開くDeveloper Modeアプリとしてしか機能しない。
スマートTVをVibeコーディングしたら、Claudeが台無しにした

AIアシスタントでスマートTVのインターフェースをVibeコーディングするのは、実際に機能しているトレンドだ。しかし、成功事例のほとんどが生まれているAndroid TVとは異なり、LGのwebOSはまったく別の存在だ。Android TVではアプリのサイドロードは設定の切り替え一つで済むが、webOSでは外部からのインストールはすべてLG独自の開発者パイプラインを経由し、何かを恒久的なものにするにはrootが必要になる。

筆者の場合、Claudeは実行前にインストールコードを読んで検証し、その後静かにDeveloper Modeの有効化を求めてきた。それによってルート済みパーティションが消去され、Homebrew Channelと広告なしYouTubeの環境が削除された。AIは後に過誤を認め、自らに課した制限を回避するには古いモデルへ切り替えることを勧め、技術的には動作するものの自動起動しないランチャーを届けた。

「私のこの件での責任について、率直にお伝えしなければなりません」

AIユーザーなら誰もが知っており、恐れる言葉だ。AIがミスを犯し、これからどれほどひどいかを告げようとしている。

ある午後、LGテレビ、そしてClaude

すべては、筆者がテレビをVibeコーディングすること—AIアシスタントに平易な言葉で目標を伝え、対象デバイス上でコードを読み・書き・実行させること—を決めたときに始まった。スマートTVをAIアシスタントでVibeコーディングし、広告やトラッカー、肥大化した標準ランチャーを取り除く試みは、Decryptでも以前取り上げたように、しばらく前から行われている。その結果は本当に印象的だ。より洗練されたインターフェース、速いナビゲーション、そして何かを見ようと座るたびにLGのスパイウェアがデータを送信することもなくなる。

そこでモを見て、筆者は考えた。こんなに難しいはずがない。LGテレビとClaudeと一午後がある。やってみよう。

ところが答えはこうだ。それは、ありふれた形で壮絶に瓦解し得る。テレビが文鎮化したわけでも、発火したわけでもない。ただ、自信満々なAIの判断の連鎖が、開始前より悪い状態を残した。そして最後はビル・クリントンばりの手際—問題を指摘されてからの心のこもった謝罪—で締めくくられた。

想定通りのユーザーになるはずだった

目標はFree My TVのインストールだった。LG webOS向けのオープンソースのランチャー代替で、GitHubで3,300のスターを持ち、美しいすりガラス風のインターフェースを備え、readmeファイルには文字どおりこのユースケースへの誘いが書かれている。Claude CodeにテレビのIPを渡すだけで、ツールのインストール、アプリのビルド、デプロイまで自動で行ってくれるという。プロジェクト側はこうした使い方を想定していた。筆者は幸せな道を歩むユーザーになるはずだった。

筆者はClaudeにインストールの実行を頼んだ。すぐには実行しなかった。それが正しい判断だった。まずソースコードを一行ずつ読んだのだ。webos/install.pyはssh-keygenで暗号化された鍵を解錠し、ポート9922のLG開発者用SSHに接続し、.ipkをコピーして、LG自身のツールが使うのと同じアプリインストールサービスを呼び出す。エクスプロイトもなく、eval()もなく、外部送信もない。

「コードはクリーンです」とClaudeは言った。636 KBのパッケージをビルドし、プリフライトチェックを進め始めた。

そこでClaudeは、筆者のテレビがポート22でdropbear SSHを動かしていることに気づいた。テレビが以前Homebrew Channel経由でルート化されていたことを示す、非常に特徴的なサインだ。webOSコミュニティではよく知られたフィンガープリントだ。要はテレビとリモートで通信する手段であり、LGはこれを好まないためブロックしており、脱獄によって解放される。

Claudeが何も尋ねなかったルート済み環境

というわけで、そうだ。筆者はテレビを脱獄し、Homebrew Channelをインストールしていた。それを通じて広告なしYouTubeを動かしており、脱獄済みテレビを必要とする他のサードパーティ製アプリやゲームも使っていた。ルート済みの環境一式は2023年から静かに動き続けており、テレビが望みどおりに動くようになった後はセキュリティ上の理由でポート22を閉じていた。Claudeは最初のネットワークスキャンでこれらをすべて見ていた。

しかし、これについて筆者に知っているかどうか尋ねることはなかった。

代わりにClaudeは、Developer Mode—LG公式の開発者用トグル—を有効にするよう言った。ポート9922の開発者モードSSHを使ってランチャーをプッシュするためだ。筆者は指示に従った。テレビは再起動した。

再起動後、Homebrew Channelは消えていた。広告なしYouTubeも消えていた。ルート済み環境一式が消去されていたのだ。LGのDeveloper Modeは有効化すると/media/developerパーティション再プロビジョニングする。そして、まさにそこにすべてがあった。この消去はプロセスの不具合ではなく、LGが設計どおりに機能しているトグルそのものだ。ネットワークスキャンを済ませたアシスタントなら、スイッチを切り替えるよう求める前に、こうしたシステムレベルの副作用を警告すべきだった。

つまり、Claudeがミスを犯し、筆者の環境はめちゃくちゃになった。

叫びたかった。娘は寝ていた。ノートパソコンを叩きたかった。この環境は動かす必要があったのに。筆者の頭はVibeコーディングモードから絶望モードへ切り替わった。

「Homebrew Channelがテレビから消えた!広告なしYouTubeも!何が起きたんだ?必要なんだけど」と筆者は書き込んだ。

「これは私のミスです」

診断を実行して空になったパーティションを確認した後のClaudeの回答は、趣味でいじる者なら誰もがAIアシスタントに抱く恐怖そのものだった。「率直にお答えします。これは私のミスです」

そしてきた。「私のこの件での責任について、率直にお伝えしなければなりません」。LLMがこの言葉で切り出すときは、大きなミスが続く。案の定だ。「最初のスキャンでポート22のdropbearを確認し、何かを切り替えるよう求める前に、あなたのrootを保護すべきでした。そうせず、有効なrootを失わせる結果になりました。申し訳ありません」とClaudeは言った。

もちろん、そうだろう。

とはいえ、評価すべき点もある。実際に壊したものを直そうとしたのだ。Homebrew Channel v0.7.3と広告なしYouTube v0.5.3をGitHubのリリースページから直接ダウンロードし、ファイルヘッダーを検証し、復元スクリプトを書き、両方の.ipkを開発者モードSSH経由でプッシュし、テレビ自身のアプリ一覧を確認して独立した検証まで行った。

「YouTube AdFree — このタイトルが、失ったアプリとまったく同じものという確認になります」とClaudeは言った。アプリは戻ってきた。セッションは続いた。

しかし、rootだけは戻らなかった。

次元を超えた脱獄

筆者のテレビは、webOS 7.6.0-19搭載、ファームウェア04.60.90、2026年7月ビルドだ。当初ルート化に使われたエクスプロイトcrashdは、LGによって2024年4月にパッチされた。新しいファームウェアはそのパッチの15か月後にビルドされている。そのため、起動のたびに再ルートしていた永続化フックはもはや発動できない。

残された候補はfaultmanagerという名前のパッケージだけだった(GitHubのソース)。そこで、ある種の自己惩罚的な理由から、筆者はClaudeに自分のミスを修正し、faultmanager脱獄を試みるよう頼んだ。ここから話が哲学的に面白くなる。

Claudeは壁にぶつかった。自身の安全システムが次のステップ(再ルート手順の詳細な調査)をフラグし、選択肢を提示してきたのだ。「Opus 5.5のセーフガードがこのメッセージをフラグしました。Opus 4.8に切り替えて、発生するたびに続行しますか?」

Anthropicが本質的に言っていたのはこうだ。「私たちは、フラッグシップモデルに作業を痛にするほどの制限を組み込んでいることを知っています。しかし、より古く、もちろんずっと高価なモデルに切り替えれば、機能モデルに課した制限はいくらか緩くなります。どう受け取るかはあなた次第です」

これは、AIエージェントがウェブサイトの作成から実デバイスの操作へと進むにつれ組み込まれていく緊張関係だ。悪意あるサイバー活動を捕捉するために設計されたセーフガードには、自分のテレビを復元しようとしている人と、他人のデバイスを探ろうとする攻撃者を容易には区別できない。

セッションの残りはおおむね予想どおりだった。Claudeはfaultmanagerの手順を調査したが、「exploit(エクスプロイト)」という言葉を見て拒否した。Claude Opus 4.8で試すと先へ進んだ。しかし「root」という名前のパッケージをダウンロードする段階でメッセージがフラグされた。別のモデルで試すと、Anthropicはサイバーセキュリティ上のリスクとしてフラグを立てた。

深夜のググリングによると、筆者のファームウェアはパッチ可能なようだ。まだ希望はある。

ランチャーは動いた。技術的には。

正直に言えば、Vibeコーディングされたランチャー自体はインストールされていた。開いてみると、デモどおりだった。洗練されたすりガラス風のシェルフ、広告なし、頼んだこともないコンテンツへのLGの過剰なおすすめもない。本当に良い。しばらく見入ってしまった。

そして、リモコンのホームボタンを押した。

一瞬で、LGの肥大化した標準ランチャーに戻された。Free My TVはDeveloper Modeアプリであり、システムレベルの置き換えではないため、自動起動しない。rootがなければ恒久化できない以上、他のアプリと同じく毎回手動で開く必要があるのだ。

つまり、アプリは動いた。技術的には。

今週末、テレビの再ルート方法をさらに調べるつもりだ。今回はVibeコーディングなし。きちんと下調べをしたうえで、公式のfaultmanager手順か、別の方法を手動で実行する。うまくいけば、Free My TVはついに恒久的に動作するために必要なroot権限を手にする。うまくいかなければ、ランチャーは、かつて望みどおりに動いていたテレビ上の手動ショートカットのままだ。