NanoClaw

NanoClaw のアップデートで RTK が pnpm test を素通りしてた話

TL;DR — RTK の rewrite は pnpm run build を圧縮するが pnpm test(実体は vitest run)は素通り。加えて /update-nanoclaw/update-skills を同一コンテキストで自動呼び出ししていた。SKILL.md を2行変えて解決。

NanoClaw の大型アップデート来ましたね。かなり中身が変わっていてローカルでのマージにものすごく時間がかかりました。最終的には、

「もう俺の作ったスキルさえ無事なら後はどうでもいいから全部上書きしちゃって!」

と雑な投げ方をしてアップデートをしてもらいました。

無事(一部無事じゃなかったけど git のログから復旧した)終わったんだけど、後日再度 /update-nanoclaw を実行した時の話です。

/update-nanoclaw を実行したら5時間制限の40%くらいを1回で使い切ってしまった。なにこれ、と思って Claude さんに調べてもらった。

以前 RTK を入れた記事を書いたとき、「効果はこれからに期待」と書いたんだけど、うまく行かなかったようで…

以下は、Claude さんに解説してもらった文章です。

RTK の仕組みをおさらい

RTK は Claude Code の PreToolUse hook として動く。Bash ツールが呼ばれるたびに rtk hook claude が起動し、rtk rewrite "<コマンド>" でコマンドを書き換えられるか確認する。

  • 書き換えできる(exit 3)→ rtk <subcommand> が代わりに実行され、出力が圧縮される
  • 書き換えできない(exit 1)→ 元のコマンドがそのまま実行される(RTK はノータッチ)

何が素通りしていたか

rtk rewrite "pnpm run build"
# → rtk pnpm run build(exit 3: 書き換え成功)

rtk rewrite "pnpm test"
# → (何も出力なし、exit 1: 書き換えなし)

pnpm run build は圧縮される。でも pnpm test は exit 1 で素通り。

Anthropic の OAuth 禁止で NanoClaw 大丈夫?→大丈夫(?)だと思うけど別の問題があった

TL;DR — systemd user service が After=network.target のみだと Docker より先に起動してクラッシュループになる。After=docker.service + ExecStartPre のソケット待機で解決できる。

Anthropic がサードパーティツールでの OAuth トークン利用を禁止したというニュースを見て、自分の NanoClaw は大丈夫かと確認しに行ったら、OAuth とは別のところに問題があった。

Anthropic の OAuth 禁止とは

Anthropic が Claude Pro/Max のサブスクリプション認証トークンをサードパーティツール経由で使う行為を禁止した。

要するに「月 20 ドルの Claude Pro に加入して、API キーの代わりにそのセッショントークンを使えば月 200〜500 ドル相当の API をほぼタダで使える」という抜け道を塞いだ話。

昨今の Claude への流入増大も影響あったんだろうね。

NanoClaw への影響は?

(おそらく)なし。

公式がそう言ってる、けどまあどうなるか分かんないけどね。
NanoClaw は、Anthropic の正規 API キーを使う構成で、OAuth には一切依存していない。認証まわりは OneCLI という credential proxy が担っていて、コンテナ起動時に ANTHROPIC_BASE_URL 経由でキーを注入する仕組みになっている。

Credentials are injected by the host’s credential proxy via ANTHROPIC_BASE_URL.

直接 .env に API キーを書くわけでもなく、OAuth トークンを流用するわけでもないので、今回の禁止措置とは完全に無関係って言ってる。まあ若干不安だけど。
ということで確かめてみることにしました。

余ったMacBook Pro 2015でUbuntuを動かすまでの地獄

TL;DR — MacBook Pro 2015 の Apple SSD は Linux で 4MB 超の DMA 転送でバイナリが壊れる問題がある。max_sectors_kb=1024 の udev ルールと GRUB の ATA パラメータ追加で解決できる。

はじめに

先日 Windows 11 のノートPCを手に入れた。会社でも WSL で Ubuntu 使ってるので喜び勇んで WSL をセットアップして満足。うちでも開発できる環境ができた。
それはそれでいいんだけど、それまでメインで使っていた MacBook Pro 2015 は完全に引退となった。

macOS はとっくに更新できなくなっているし、このまま眠らせておくのも勿体ない。

OpenClaw

最近、猫も杓子も OpenClaw という世の中の流れになっているらしい。中国ではセットアップするサービスに行列が出来たとか何とか。
自宅サーバーに置いてローカルで動き、WhatsApp や Telegram など使い慣れたチャットアプリから操作できる。メール管理やカレンダー操作、ファイル操作まで自動化できるというやつですね。 面白そうだし、試してみようかなーと思ったけど、いざ調べてみたら結構セキュリティやばそう。

  • RCE 脆弱性(CVE-2026-25253、CVSS 8.8)が報告されており、認証なしで公開されているインスタンスが世界に 42,000 件以上
  • プラグインマーケットプレイス(ClawHub)の約 12% が悪意あるスキル
  • メール・カレンダー・購入・ファイルと権限が広すぎるので、侵害されたときの被害が大きい

いや、これ普通にやったらやばいだろ。

nanoclaw

で、他のないかなと探していたら、nanoclaw を見つけた。コンテナで隔離して動かせる設計になっているし、これならホストへの影響も最小限になりそう。

ということで、MacBook Pro 2015 に Ubuntu を入れて、その上で nanoclaw をコンテナで動かすことにしたんだけど、そこからはまりまくった。