# io.github.kitepon-rgb/aiterm-mcp (npm · aiterm-mcp)

Claude Code drives Codex CLI's interactive TUI and durable tmux terminals over MCP.

- Trust score: 30/100 (low)
- Change this week: −30
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `aiterm-mcp`: 30/100 (this document), [markdown](https://verifymcp.io/servers/kitepon-rgb-aiterm-mcp/aiterm-mcp.md), [page](https://verifymcp.io/servers/kitepon-rgb-aiterm-mcp/aiterm-mcp)

## Channel facts

- Registry: `npm`
- Package: `aiterm-mcp`
- Version: `0.21.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 36/100
  - Malware scan not yet available for this package.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to kitepon-rgb/aiterm-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 0/100
  - Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.
- **Capabilities**: 0/100
  - Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.

**Unverified: 4 categories.** Categories scored 0 because our sandbox run of this package has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you.

## Install

### Claude

```bash
claude mcp add kitepon-rgb-aiterm-mcp -- npx -y aiterm-mcp
```

### Codex

```bash
codex mcp add kitepon-rgb-aiterm-mcp -- npx -y aiterm-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kitepon-rgb-aiterm-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "aiterm-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add kitepon-rgb-aiterm-mcp --command npx --arg -y --arg aiterm-mcp
```

### Hermes

```yaml
mcp_servers:
  kitepon-rgb-aiterm-mcp:
    command: "npx"
    args: ["-y", "aiterm-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "kitepon-rgb-aiterm-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "aiterm-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 30, −38)

- [security regression] Malware scan: pass → unverified
- [security regression] Stability: 0.20 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional] Package version: 0.20.3 → 0.21.3

### 2026-08-02 (score 68, +51)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: kitepon-rgb/aiterm-mcp
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → poor
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 17, −8)

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: poor → unverified
- [functional] Package version: 0.20.2 → 0.20.3

### 2026-07-31 (score 25, +19)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 6, −55)

- [security regression] Provenance: pass → unverified
- [security regression] Known CVEs: partial → unverified
- [security regression] Install scripts: pass → unverified
- [security] The attested source repository moved: kitepon-rgb/aiterm-mcp
- [functional regression] Maintenance: pass → unverified
- [functional regression] License: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified
- [functional] Licence: MIT

### 2026-07-28 (score 61, +1)

- [security improvement] GHSA-frvp-7c67-39w9 no longer affects this package
- [security improvement] Known CVEs: fail → partial

### 2026-07-27 (score 60, +53)

- [security regression] GHSA-frvp-7c67-39w9 affects this package: medium
- [security regression] Known CVEs: unverified → fail
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: kitepon-rgb/aiterm-mcp
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: poor
- [functional] First check of Tool coverage: 84
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 62
- [functional] Licence: MIT

### 2026-07-26 (score 7)

First indexed and scored.

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (13)

### `diagnostics` (~52 tokens)

Factory 向け read-only 診断。安全な状態語彙だけを機械可読 JSON で返す（PTY 内容・認証情報・path・環境値は返さない）。

### `pty_open` (~139 tokens)

ローカル永続端末(tmux セッション)を1個開き、session_id を返す。tmux サーバ常駐ゆえ本サーバや クライアントが再起動してもセッションは生存する。リモート操作は専用ツールにせず、開いた端末の中で pty_send(session_id, "ssh host") と打って入る。

Input parameters:

- `name`: セッション名（省略時は t1, t2... を自動採番）
- `shell` (string): 起動シェル（既定 bash）

### `pty_send` (~553 tokens)

セッションへテキストを送る。通常PTYへは送信のみ（出力は pty_read で取得）。agent session（launcher起動）への send は自動で dispatch になる: TUI の ready gate と submit 分離を通して即返り、receipt の event_cursor を返す。dispatch した子は投げっぱなしでよい＝親はここで待たない。完了通知は `aiterm-wait --session <id> --cursor <event_cursor>` を親のターンを塞がない別プロセスとして起動して受け、exit を完了通知として扱う（exit 0=done / 3=timeout（既定600秒・未完了） / 4=closed。receiptのoutcomeが正で、done以外は未完了。ポーリング不要）。この待ちコマンドを foreground で実行して親のターンを塞ぐことはしない（receipt が実際の起動形を示す）。結果回収は pty_read(agent_transcript:true)、Claude の durable turn は claude_turn を使う。force:true は非Claude agent sessionへの手動介入用の素送信。managed Claudeの承認UIはclaude_approvalを使う。

Input parameters:

- `enter` (boolean): 末尾で Enter を送る（agent dispatch では常に submit）
- `force` (boolean): 破壊的コマンドゲートを越える。非Claude agent sessionではdispatchせず素送信する。managed Claudeのactive turnには使えない
- `mark` (boolean): 完了 sentinel(終了コード付き)で包む。pty_read(wait:true) が until 無しでも自動検出して完了確定する（ネスト中や非シェル前面でも効く確実な完了検出。手で until を組む必要なし）。 enter:false と併用すると sentinel が実行されず完了検出が発火しない（送信後に pty_key("Enter") で実行される）。
- `raw` (boolean): 送信前サニタイズを無効化
- `rtk` (boolean): 既知コマンドを rtk 形へ委譲して送る（rtk 不在なら素通し）
- `session_id` (string, required)
- `text` (string, required): 送る文字列（コマンド／prompt）。UTF-8で最大64KiB

Output parameters:

- `event_cursor`
- `launch_id`
- `mode` (string)
- `schema` (string)
- `session_id` (string)
- `submit_residue`
- `vendor`

### `pty_read` (~467 tokens)

セッションの出力をトークン削減して読む（既定は前回読取位置からの増分）。削減: 制御文字除去 / 反復圧縮 / head+tail 折りたたみ＋復元ヒント＋メタ併記。agent_transcript:true は agent session の直近完了ターンの最終 assistant メッセージを公開されたvendor記録から平文で返す。長い回答が screen tail で切れた時の回収用。

Input parameters:

- `agent_transcript` (boolean): agent session の直近完了ターンの最終 assistant メッセージを返す。Claudeはmanaged Stop hook result、他vendorはtranscriptを使う。長い回答がscreen tailで切れた時の回収用
- `full` (boolean): 増分でなく全文
- `line_range`: 全文からの行範囲 "A:B"
- `lines`: 末尾 N 行のみ
- `operation_id`: Claude operationの期待ID。agent_transcript:true時だけ指定し、古い別operationの結果を拒否する
- `raw` (boolean): 削減せず生テキスト
- `rtk` (boolean): 直前コマンド別の自前 reducer(git/grep/pytest 等)で縮約
- `screen` (boolean): 描画済みスクリーン(TUI 向け)
- `session_id` (string, required)
- `timeout` (number): wait の最大待ち秒数
- `until`: この文字列が出たら完了とみなす（既定はリテラル部分一致。`$ ` や `[..]` もそのまま探せる）
- `until_regex` (boolean): until を正規表現として扱う（既定 false＝リテラル部分一致。メタ文字を使いたい時のみ true）
- `wait` (boolean): 完了まで待つ（dead / mark sentinel 自動検出 / until / 出力静止∧シェル復帰 / timeout）

### `pty_key` (~97 tokens)

制御キーを送る（C-c, C-d, Enter, Tab, Up, Down... の別名に対応）。managed Claude sessionではturn相関を守るためC-cだけを許可し、承認UIはclaude_approvalで操作する。

Input parameters:

- `key` (string, required): キー名（例 "C-c", "Enter", "Up"）
- `session_id` (string, required)

### `pty_close` (~56 tokens)

セッションを閉じ、ログ／読取位置を破棄する。同じsession_idへの再試行は安全で、closed／already_closedのstructured receiptを返す。

Input parameters:

- `session_id` (string, required)

Output parameters:

- `outcome` (string)
- `schema` (string)
- `session_id` (string)

### `pty_list` (~39 tokens)

握っているセッション一覧（名前 / 現在の前面コマンド / attach 状態 / サイズ / agent 情報）。

### `claude_turn` (~100 tokens)

managed Claude sessionのdurable operationを構造化issue／recoverするmachine-caller専用面。pending／unknown／completedを人間向けerror文字列の解析なしで返し、Observer固有ロジックは持たない。

Input parameters:

- `action` (string, required)
- `operation_id` (string, required)
- `session_id` (string, required)
- `text` (string): issueだけに指定するbounded turn本文

Output parameters:

- `action` (string)
- `operation_id` (string)
- `raw_output`
- `reason`
- `schema` (string)
- `session_id` (string)
- `status` (string)
- `submit_residue`

### `claude_approval` (~157 tokens)

managed Claudeのactive turn中に表示された権限確認UIを、turn相関を保ったまま検査・応答する専用面。inspectで画面digestと安全な単発Yes/Noだけを取得し、respondは同じoperation・同じdigestが現在も表示中の場合だけ送信する。

Input parameters:

- `action` (string, required)
- `approval_choice` (string): respondだけに指定する
- `observed_prompt_digest` (string): 直前のinspectが返したdigest。respondだけに指定する
- `operation_id`: durable operationのID。通常pty_send由来の匿名turnでは省略する
- `session_id` (string, required)

Output parameters:

- `action` (string)
- `at` (string)
- `choices` (array)
- `operation_id`
- `prompt_digest` (string)
- `schema` (string)
- `selected_choice`
- `session_id` (string)
- `status` (string)

### `claude_agent` (~430 tokens)

【Claude Code (Anthropic)】の対話エージェントTUIを永続端末に起動する。`claude -p`ではなく、同じ利用者可視sessionへpty_sendで継続入力する。常にmanaged（isolated settingsのStop hook）で起動する。起動前に共有認証を構造化確認し、未認証ならsessionを作らない。managed session内の/login・/logoutは拒否する。起動して投げたら投げっぱなしでよい＝親はここで待たない。完了通知は起動応答の wait_command（初回prompt時）または pty_send dispatch 後の aiterm-wait --session <id> --cursor <event_cursor> を親のターンを塞がない別プロセスとして起動して受ける（exit 0=done / 3=timeout（既定600秒・未完了） / 4=closed。receiptのoutcomeが正で、done以外は未完了。ポーリング不要・foreground実行はしない）。結果回収は pty_read(agent_transcript:true)。Claude の durable turn は claude_turn でも回収できる。

Input parameters:

- `cwd`: 作業ディレクトリ（対象リポのルート等・任意）
- `launch_operation_id` (string): promptless managed launchのexact replay相関ID。session_name必須
- `model`: 起動モデル（例: claude-sonnet-4-6）。省略時はClaude CLI既定
- `prompt`: 起動時に渡す初手プロンプト（任意）。送信後は待たずに即返る
- `reasoning_effort`: Claude Code reasoning effort。low/medium/high/xhigh/max。省略時はCLI既定
- `session_name`: セッション名（省略で自動採番）

Output parameters:

- `event_cursor`
- `managed_completion` (boolean)
- `provider` (string)
- `schema` (string)
- `session_id` (string)
- `submit_residue`
- `wait_command`

### `codex_agent` (~592 tokens)

【Codex (OpenAI)】の対話エージェント TUI を永続端末に起動する。実装・レビュー・調査を対話で回す。委譲契約を使う完全な呼び出し例: `codex_agent({"prompt":"<依頼>","model":"gpt-5.6-sol","reasoning_effort":"high","cwd":"/absolute/path/to/repo","write_scope":"read-only"})`。turn は pty_send で送る（自動で非ブロック dispatch になる）。起動して投げたら投げっぱなしでよい＝親はここで待たない。完了通知は起動応答の wait_command（初回prompt時）または pty_send dispatch 後の aiterm-wait --session <id> --cursor <event_cursor> を親のターンを塞がない別プロセスとして起動して受ける（exit 0=done / 3=timeout（既定600秒・未完了） / 4=closed。receiptのoutcomeが正で、done以外は未完了。ポーリング不要・foreground実行はしない）。結果回収は pty_read(agent_transcript:true)。model / reasoning_effort を引数で指定可（省略時は端末 config／CLI 既定を継承。実効値は起動応答に明示）。

Input parameters:

- `cwd`: 作業ディレクトリ（対象リポのルート等・任意）
- `model`: 起動モデル（例: gpt-5.6-sol / gpt-5.6-terra / gpt-5.6-luna）。省略時は端末 config／CLI 既定を継承（端末側のピンがそのまま効く。実効値は起動応答に明示される）
- `prompt`: 起動時に渡す初手プロンプト（任意）。送信後は待たずに即返る
- `reasoning_effort`: reasoning effort（思考レベル）。low/medium/high/xhigh/max/ultra（CLI 版依存）。ultra は max 推論＋proactive 自動委譲 ON＝使用量急増注意（明示要求時のみ）。省略時は端末 config／CLI 既定。
- `session_name`: セッション名（省略で自動採番）
- `write_scope` (string): 能力宣言。read-only、または書込みを許可するパスの説明文字列。Codexのread-onlyだけはCLI sandboxで実効禁止する

Output parameters:

- `event_cursor`
- `managed_completion` (boolean)
- `provider` (string)
- `schema` (string)
- `session_id` (string)
- `submit_residue`
- `wait_command`
- `write_scope` (string)
- `write_scope_enforcement` (string)

### `grok_agent` (~439 tokens)

【Grok Build の Grok モデル (既定 grok-4.5)】の対話エージェント TUI を永続端末に起動する。turn は pty_send で送る（自動で非ブロック dispatch になる）。起動して投げたら投げっぱなしでよい＝親はここで待たない。完了通知は起動応答の wait_command（初回prompt時）または pty_send dispatch 後の aiterm-wait --session <id> --cursor <event_cursor> を親のターンを塞がない別プロセスとして起動して受ける（exit 0=done / 3=timeout（既定600秒・未完了） / 4=closed。receiptのoutcomeが正で、done以外は未完了。ポーリング不要・foreground実行はしない）。結果回収は pty_read(agent_transcript:true)。model を引数で指定可。reasoning_effort は対話 TUI 非対応（指定はエラー）。

Input parameters:

- `cwd`: 作業ディレクトリ（対象リポのルート等・任意）
- `model`: 起動モデル。省略時は grok-4.5
- `prompt`: 起動時に渡す初手プロンプト（任意）。送信後は待たずに即返る
- `reasoning_effort`: 指定不可（grok CLI の --effort は headless 専用で、対話 TUI では警告の上無視される。composer は effort 自体非対応）。指定すると起動前にエラーを返す
- `session_name`: セッション名（省略で自動採番）
- `write_scope` (string): 能力宣言。read-only、または書込みを許可するパスの説明文字列。Codexのread-onlyだけはCLI sandboxで実効禁止する

Output parameters:

- `event_cursor`
- `managed_completion` (boolean)
- `provider` (string)
- `schema` (string)
- `session_id` (string)
- `submit_residue`
- `wait_command`
- `write_scope` (string)
- `write_scope_enforcement` (string)

### `composer_agent` (~439 tokens)

【Grok Build の Composer モデル (既定 grok-composer-2.5-fast)】の対話エージェント TUI を永続端末に起動する。turn は pty_send で送る（自動で非ブロック dispatch になる）。起動して投げたら投げっぱなしでよい＝親はここで待たない。完了通知は起動応答の wait_command（初回prompt時）または pty_send dispatch 後の aiterm-wait --session <id> --cursor <event_cursor> を親のターンを塞がない別プロセスとして起動して受ける（exit 0=done / 3=timeout（既定600秒・未完了） / 4=closed。receiptのoutcomeが正で、done以外は未完了。ポーリング不要・foreground実行はしない）。結果回収は pty_read(agent_transcript:true)。model を引数で指定可。reasoning_effort は非対応（指定はエラー）。

Input parameters:

- `cwd`: 作業ディレクトリ（対象リポのルート等・任意）
- `model`: 起動モデル。省略時は grok-composer-2.5-fast
- `prompt`: 起動時に渡す初手プロンプト（任意）。送信後は待たずに即返る
- `reasoning_effort`: 指定不可（grok CLI の --effort は headless 専用で、対話 TUI では警告の上無視される。composer は effort 自体非対応）。指定すると起動前にエラーを返す
- `session_name`: セッション名（省略で自動採番）
- `write_scope` (string): 能力宣言。read-only、または書込みを許可するパスの説明文字列。Codexのread-onlyだけはCLI sandboxで実効禁止する

Output parameters:

- `event_cursor`
- `managed_completion` (boolean)
- `provider` (string)
- `schema` (string)
- `session_id` (string)
- `submit_residue`
- `wait_command`
- `write_scope` (string)
- `write_scope_enforcement` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/kitepon-rgb-aiterm-mcp/aiterm-mcp#diagnostics

## Score history

- 2026-08-03: 30
- 2026-08-02: 68
- 2026-08-01: 17
- 2026-07-31: 25
- 2026-07-30: 6
- 2026-07-28: 61
- 2026-07-27: 60
- 2026-07-26: 7

## Links

- npm package: https://www.npmjs.com/package/aiterm-mcp
- Socket report: https://socket.dev/npm/package/aiterm-mcp
- Repository: https://github.com/kitepon-rgb/aiterm-mcp
- Changelog RSS feed: https://verifymcp.io/servers/kitepon-rgb-aiterm-mcp/aiterm-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/kitepon-rgb-aiterm-mcp/aiterm-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/kitepon-rgb-aiterm-mcp/aiterm-mcp
