どうもこんにちは、Tadash です。
ついに、Bob Shell も 2.0.0 になりました! 開発チームのみなさん、ありがとうございます。
IBM Bob の V2 が出たのは 2026年6月24日でした。ただ、そのとき載ったのは IDE 側だけで、Bob Shell は「その後順次対応」という案内でした。IDE がもう 2.0.x で動いているのを横目に、Shell はどうなるんだろうとヤキモキしていました。待った甲斐がありました。
V2 はアーキテクチャの作り直しを伴っていて、従来は別々の基盤で動いていた IDE 拡張とシェルを、エージェント層・ハーネス層・クライアント層の3層に整理し直したと発表されています。Shell が後になったのは、この土台の載せ替えがあったからなのだと思います。
すぐ触りたいところですが、いきなり動かすと「なんか新しくなったな」で終わってしまいます。そこで先に、入れたパッケージとローカルのファイルだけを読んで、変更点を洗い出しました。開けてみたら思っていたより中身が入れ替わっていて、7つ出てきました。
しかも1つ目が、この連載で「まだ対応していない」と書いた機能です。順に見ていきます。
先に、7つまとめ
| # | 変更点 | ひとことで |
|---|---|---|
| 1 | Skill に対応した |
use_skill が載った。探索先に ~/.claude/skills/ が入っている |
| 2 | サブエージェント |
spawn_subagent ツール。タスクが親子構造になった |
| 3 | 履歴が SQLite になった | JSON ファイル → ~/.bob/db/bob.db。AI が書いた行の記録テーブルつき |
| 4 | 設定が総入れ替え | 場所も中身も別物。画面まわりが消えて、コストと権限の体系へ |
| 5 | ヘッドレス実行 |
bob run に --format stream-json と --max-cost
|
| 6 | フォルダの信頼 | 信頼していないフォルダでは動かない |
| 7 | コマンドの整理 | 17個に。/vim や /theme が消えて /resume /skills が増えた |
この連載で書いた記事のうち、3本は作り直しになりそうです。
- セッションログがそのまま作業記録になる … 履歴が JSON から SQLite に変わったため
- Bob Shell(v1.0.6)は Skill にまだ対応していない … 対応したため
- /settings で変えられる設定の全項目 … 設定が総入れ替えになったため
そのくらい変わっています。
調べ方
bob --version 以外、Bob には何もさせていません。読んだのはこの5つだけです。
| 見たもの | 場所 |
|---|---|
| バージョン | bob --version |
| 同梱ドキュメント | node_modules/bobshell/README.md |
| パッケージ定義 | node_modules/bobshell/package.json |
| 実行ファイル | node_modules/bobshell/dist/bob.js |
| ローカルの設定・データ |
~/.bob/ 配下 |
$ bob --version
2.0.0
commit: 7a5dcab1
Node の要求は >=22。配布は 1.0.6 と同じく .tgz のグローバルインストールです。
変更点1:Skill に対応した
まず、18 MB ある dist/bob.js を skill という語で検索しました。ずっと気にしていた機能です。出てきたのがこれです。
use_skill
SKILL.md
SkillsRegistry
WorkspaceSkillsManager
loadGlobalSkills
以前、Bob Shell(v1.0.6)は Skill にまだ対応していないという記事を書きました。当時 Skill は IBM Bob の IDE 側の機能で、Bob Shell からは使えませんでした。実機で検証して「今はない」と結論づけた回です。
2.0.0 で載ったようです。 自分が「まだない」と書いた機能が、次のメジャーで入ってくる。連載をやっていて一番うれしい瞬間です。/skills というコマンドも増えていました。
探しに行く場所を見て、おっ?と思いました
グローバルの探索先が3つ定義されています。
~/.bob/skills/
~/.agents/skills/
~/.claude/skills/
3つ目です。~/.claude/skills/。Claude Code が Skill を置くディレクトリです。
私はふだん Claude Code も併用していて、そちらに Excel 操作用の SKILL.md を1本置いてあります。openpyxl で書いて数式の検証だけ本物の Excel に任せる、といった手順をまとめたものです。前回の Excel ライブラリ比較で分かったことも、そこに書き足しました。
このディレクトリが本当に読まれるなら、移植なしでそのまま持ち込めそうです。書いた資産が別の道具でも動くのだとすると、道具の選び方の前提が変わってきます。
ワークスペース側は .bob/skills/<名前>/SKILL.md を見に行くようです。プロジェクト単位で置ける形になっています。
組み込みの Skill が7本ついてきた
BUILTIN_SKILLS として同梱されていました。
| 名前 | 用途 |
|---|---|
create-plan |
要件の聞き取り・コードベース調査・計画ファイルの作成までの手順 |
create-skill |
Skill(SKILL.md)の作り方。frontmatter のスキーマ・命名規則・置き場所 |
create-mode |
カスタムモード(custom_modes.yaml)の作り方 |
configure-mcp |
MCP サーバーの追加と切り分け。ローカル/リモート、依存の確認、秘密情報の扱い |
build-mcp-server |
MCP サーバーを1から作る手順 |
xlsx-insights |
Excel ブックを読んで、集計用の Node スクリプトを生成・実行して要約する |
create-chart |
create_chart ツール向けのコンポーネント定義一式 |
create-skill が入っているのは、地味にありがたいところです。Skill の書き方を Bob 自身に聞けるということですから、最初の1本のハードルが下がります。
xlsx-insights があるのも、前回の記事の直後としては出来すぎです。思わずニヤリ、でした。V2 の発表では .docx・.pdf・.xlsx をネイティブに扱えるようになったとされているので、その流れで入ったものかもしれません。
変更点2:サブエージェント
spawn_subagent というツールが増えていました。設定に session.subagents、起動オプションに --disable-subagents。どちらも既定は有効のようです。
サブエージェントは V2 の目玉として発表されていた機能でもあります。「コンテキスト効率を高める独立した調査機能」という説明でした。
タスクを保存するテーブルに parent_id という自己参照のカラムがあるので、親タスクの下に子タスクがぶら下がる形で管理されるのだと思います。調べものを並列で投げられるなら、使い方はだいぶ変わりそうです。コストがどう積み上がるかも含めて、実機で見たいところです。
変更点3:保存先が SQLite になった
先に断っておくと、この節はテーブル定義とカラム名から読み取った推測が多めです。実際にどう動くかは、動かしてみないと分かりません。
1.0.6 では、会話の履歴が ~/.bob/tmp/<プロジェクトのハッシュ>/chats/session-*.json に JSON で置かれていました。セッションログがそのまま作業記録になるは、まさにこの JSON を読む話です。
2.0.0 では ~/.bob/db/bob.db(SQLite) に変わっています。あの記事の手順は、そのままでは通らなくなります。作り直しですが、中を覗いたらこちらのほうが面白そうでした。
| テーブル | 中身 |
|---|---|
tasks |
タスク本体。parent_id/directory/git_sha/git_branch/costs/task_type/is_pinned/locked_by など |
messages |
タスクにぶら下がる発話 |
attribution_logs |
ファイルのどの行を、どのツールが書いたかの記録 |
task_pending_approvals |
未処理の承認要求 |
_migrations |
適用済みのスキーマ移行(10件) |
attribution_logs が気になります
カラムはこうなっていました。
file_uri / repo_name / branch_name / tool_name
contribution_text / start_line / end_line / task_id
素直に読み下すと、どのリポジトリのどのブランチの、どのファイルの何行目から何行目を、どのツールが書いたかを残せる作りに見えます。
「AI が書いた部分を後から特定できる」というのは、企業で使う道具としては筋の通った機能だと思います。監査、レビュー、コードの由来の説明。そういう話につながりそうです。SQL で引ける形なのも都合がよさそうなので、実機で溜めて集計する回が1本書けるかもしれません。
tasks のカラムから読めそうなこと
ここも名前からの推測です。
-
locked_byとlock_lease_until… 同じタスクを複数のクライアントが同時に触らないようにするためのもの、でしょうか -
message_queue… 実行中に次の発話を積んでおける、ということかもしれません -
is_pinned… タスクの固定 -
costs…{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"cost":0,"contextTokens":0}という形で、タスク単位に持つようです
そして移行の履歴に、こんな2件がありました。
008_normalize_legacy_bob_code_workspaces
009_normalize_legacy_bob_code_windows_workspaces
バンドルには importLegacyBobCodeTasks という関数名も見えます。Bob Code(IDE 側)のタスクを取り込む方向に見えます。
冒頭に書いた3層アーキテクチャの話と、ここでつながります。IDE とシェルが同じ土台に載るのなら、タスクの置き場所も1つにまとめるのが自然です。CLI で始めた作業を IDE で続ける、あるいはその逆ができるのなら、使い方が変わりそうです。
変更点4:設定ファイルが総入れ替えになった
/settings で変えられる設定の全項目で、1.0.6 の40項目を1枚の表にまとめました。あれは 2.0.0 では通用しません。 きれいに全滅です。
まず場所が変わりました。
| 1.0.6 | 2.0.0 | |
|---|---|---|
| ユーザー設定 | ~/.bob/settings.json |
~/.bob/settings/settings.json |
中身は輪をかけて別物です。1.0.6 は Vim Mode・Hide Banner・Show Line Numbers のような画面まわりのスイッチが大半でした。2.0.0 の README が載せているキーはこうです。
| キー | 既定 | 内容 |
|---|---|---|
session.defaultMode |
agent |
既定のモード(agent/ask/plan/カスタム) |
session.maxTurns |
100 |
タスクあたりの最大ターン数(0 で無制限) |
session.maxCost |
0 |
タスクあたりの上限コスト(USD、0 で無制限) |
session.mcp |
true |
MCP 連携 |
session.subagents |
true |
サブエージェント |
session.autoCondense |
true |
上限が近づいたらコンテキストを自動で畳む |
session.respectGitIgnore |
false |
.gitignore されたファイルを除外する |
session.maxReadFile |
500 |
読み取りツールが返す最大行数 |
approval.autoApprovalEnabled |
true |
ツール実行の自動承認 |
approval.outsideWorkspaceAllowed |
false |
ワークスペース外での操作を許すか |
approval.allowed_permissions |
["read"] |
確認なしで通す権限グループ |
approval.allowedExecutors |
cat/git diff/git log/ls
|
execute_command の許可・拒否コマンド一覧 |
security.folderTrust.enabled |
true |
フォルダの信頼を必須にする |
tasks.retentionDays |
14 |
完了タスクの保持日数 |
telemetry.enabled |
true |
利用テレメトリ |
telemetry.excludePayload |
false |
プロンプトと応答の中身をテレメトリから除く |
bobShell.autoUpdate |
true |
起動時に自動更新する |
見た目の調整が丸ごと消えて、コスト・権限・保持期間に寄りました。個人の道具から、組織で配る道具への引っ越し、という感じがします。approval.allowedExecutors の既定が cat/git diff/git log/ls の4つだけ、というあたりにも方針が出ているように見えます。
ひとつ気をつけたい点があります。アップグレードしても旧 ~/.bob/settings.json はそのまま残っていました。新しい側には licenseConsent と lastRunVersion しか書かれていないので、旧設定が引き継がれた様子はありません。
V2 の発表では「既存設定や MCP サーバーは継承される」とされていました。ただそれは IDE の話で、Shell については別なのかもしれません。項目の名前も体系もここまで変わっているので、機械的に移すのが難しいのは分かります。1.0.6 で細かく詰めていた方は、設定し直しになる前提で見ておくとよさそうです。
変更点5:bob run でヘッドレス実行
bob run で、対話に入らず1タスクだけ実行できるようです。
bob run -p "このワークスペースのトップレベルのディレクトリを教えて"
オプションを眺めていて、作り手の意図が出ていると感じたのがここです。
| オプション | 内容 |
|---|---|
-f, --format |
pretty/json/stream-json
|
--max-turns / --max-cost
|
ターン数と金額の上限 |
--disable-tool-groups |
ツール群を名指しで無効化(例 subagent,mcp) |
--trust |
このフォルダを信頼済みにする |
--accept-license |
ライセンス同意を対話なしで通す |
--team-id |
一般種別の API キーを使うときに必要 |
--format stream-json があって、--accept-license があって、金額の上限まで掛けられる。CI に載せることを見込んだ作りに見えます。パイプラインの一部として動かすなら、対話プロンプトが出ないことと、暴走したときに止まることの両方が要ります。両方そろっていました。
認証は環境変数 BOB_API_KEY か SSO です。
変更点6:フォルダの信頼
~/.bob/trustedFolders.json というファイルが増えていました。
{
"version": 1,
"folders": {
"C:\\Users\\<ユーザー名>\\bob\\bob": "TRUST_PARENT"
}
}
信頼していないフォルダでは動かない、という作りのようです。設定の security.folderTrust.enabled が既定で true、コマンドは /permissions、起動オプションは --trust。うっかり別のリポジトリで走らせてしまう事故を、手前で止められそうです。
変更点7:コマンドが入れ替わった
バンドルに組み込みとして登録されているコマンドを拾うと、17個ありました。
/bug /clear /condense /docs /exit /help /init /logs /manage-secrets /mcp /mode /permissions /resume /settings /skills /status /team
スラッシュコマンド一覧に並べた 1.0.6 の顔ぶれと比べると、/vim /theme /memory /copy /review /create-pr /editor /ide /shell /terminal-setup /keyboard-shortcuts あたりが見当たりません。設定から画面系が消えたのと、同じ方向を向いているようです。
増えたのは /resume(過去のタスクを一覧から再開)、/skills、/status、/team、/logs。/compress は /condense、/secrets-manager は /manage-secrets、/quit は /exit と、名前が変わっただけのものもありそうです。
次に確かめること
ここまでは全部、ファイルを読んだだけの話です。実機で確かめたい項目を並べておきます。
-
~/.claude/skills/の Skill が本当に読まれるか(手持ちの Excel 用 Skill で試す) -
/skillsとuse_skillの呼び方、create-skillの中身 - サブエージェントの動き方と、コストの積まれ方
-
attribution_logsに何がどれだけ溜まるか - 旧
~/.bob/settings.jsonの設定は本当に引き継がれないのか -
bob run --format stream-jsonの出力の形 -
/helpの実際の一覧(今回はバンドルから拾ったので、画面と違うかもしれません)
1.0.6 のときも、docs や Bob 自身の説明と実画面がズレることがありました。今回もそのつもりで見に行きます。次回、実機編でお会いしましょう。
※2026-08-08 時点。Windows 11 に .tgz をグローバルインストールした Bob Shell 2.0.0(commit 7a5dcab1)で確認しました。実際に動かして確かめたものではなく、同梱の README と実行ファイル、~/.bob/ 配下のファイルから読み取った内容です。実機の挙動と食い違う可能性があります。配布物のバージョンや構成は、環境によって変わることがあります。
出典
※投稿内容は個人の見解であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありません。
