9 ファイル変更+110-9

この更新の概要

Desktopアプリ版にマルチタブ対応の統合ターミナルやタスク完了時のOS通知など、操作性を高める新機能が多数導入されました。スケジュールタスクにおいてSKILL.mdファイルを含めた一括削除や、実行中のタスク自身によるスケジュール変更が可能になっています。GitHub Actionsでのプラグイン利用やサブエージェントのディレクトリ階層による整理など、自動化と拡張性に関する仕様が強化されました。WSL環境における音声入力のセットアップ手順や、CLIのバージョン依存に関する制約事項も具体化されています。

agent-view+2-0

claude agentsコマンドでパーミッションモードやモデル、エフォートを指定する際に必要なCLIのバージョン要件が追記されました。

@@ -286,6 +286,8 @@ To set defaults for every session you dispatch from agent view, pass any of `--p
claude agents --permission-mode plan --model opus --effort high
```
Passing `--permission-mode`, `--model`, or `--effort` to `claude agents` requires Claude Code v2.1.142 or later. Earlier versions reject these flags with an unknown-option error.
The active defaults appear in the footer below the dispatch input.
Without these flags, the session uses the `defaultMode` from that directory's settings or the `permissionMode` from the dispatched [subagent's frontmatter](/en/sub-agents#supported-frontmatter-fields), and the model shown in the agent view header.
desktop-changelog+79-0

デスクトップ版のリリースノートが新設され、マルチタブターミナル、自動アップデートの修正、PRステータスアイコンの改善など多岐にわたる変更点が網羅されています。

@@ -0,0 +1,79 @@
---
title: desktop-changelog
source: https://code.claude.com/docs/en/desktop-changelog.md
---
# Desktop changelog
> Release notes for Claude Code on Desktop, covering new features, improvements, and bug fixes by Desktop app version.
This page covers Claude Code-specific changes in the Desktop app. For changes to the Claude Code CLI bundled inside the app, see the [CLI changelog](/en/changelog).
- Fixed auto-update hanging indefinitely on Relaunch to Update when popout windows refused to close.
- Fixed local sessions failing to start after a corrupted bundled Claude Code binary was cached.
- Fixed the credential helper opening duplicate browser sign-in tabs when starting a new conversation.
- Fixed Code tab PR status icons showing the wrong state for merged, merge-queued, and draft pull requests.
- Fixed Quick Entry dropping characters entered with a Korean, Japanese, or Chinese input method.
- Added an "Also delete files on disk" option to the scheduled task delete dialog; checking it removes the task's `SKILL.md` file and associated data from `~/.claude/scheduled-tasks/`.
- Added support for mouse back and forward buttons for navigating the chat view.
**3P managed deployments**
- Added an organization banner across the top of the app window, configured by IT administrators.
* Added MCP App widget rendering in Code tab sessions.
* Added an OS notification when a Code session finishes a task and you aren't currently viewing it.
* Added automatic detection and re-download of corrupted Claude Code CLI binaries on macOS.
* Added support for scheduled tasks to modify their own schedule or prompt during a run using the `update_scheduled_task` MCP tool.
* Updated the list of available MCP tools to reload automatically when the local MCP configuration changes.
* Updated PR auto-fix to post a reply on each review thread it addresses and mark the thread resolved.
* Improved SSH session startup speed by preconnecting saved SSH configurations at app launch.
* Fixed pasting a code block into a busy terminal; the app now opens a new terminal tab when the existing one has a process running.
* Fixed PR bar issues in Code sessions: each row now shows its own diff, and the sidebar status icon updates when a PR is merged.
* Fixed garbled scrollback, such as stray `%` marks and half-wrapped prompts, when opening the terminal pane after running a code block.
* Fixed Code session links opening with overlapping window controls when reached via Handoff or share links.
* Fixed git commit signing failing in local sessions when the signing key is held by 1Password or Secretive.
* Fixed locally installed plugins disappearing from sessions after the plugin registry file became corrupted by concurrent writes.
* Fixed scheduled tasks running with auto-approve echoing tool-use suggestions into the session.
* Fixed SSH plugin sync so a single problematic plugin no longer blocks sync for the rest.
**3P managed deployments**
- Added support for stdio-transport local MCP servers via the `managedMcpServers` managed-settings key; the connector detail panel now shows the command and arguments, and environment variable values are masked outside the admin Setup screen.
- Added a managed-settings option to disable `claude://` deep-link handling.
- Added support for customizing model display names in the model picker via `labelOverride`.
- Fixed per-tool MCP server policies set by administrators not being enforced in all session types.
* Fixed scheduled tasks failing to run when a previous run was stuck waiting on a permission prompt.
* Fixed scheduled tasks repeatedly retrying a failed run instead of waiting for the next scheduled time.
* Fixed scheduled-task history incorrectly showing "computer asleep" for runs skipped due to a concurrency limit.
* Added per-plugin auto-install for organization-provisioned plugins via the plugin manifest.
* Added Unarchive to the Code session context menu; sending a message in an archived session now restores it automatically.
* Added a warning when archiving a Code session that has uncommitted changes in its worktree.
* Added a warning when quitting or restarting the app while local Code sessions are running.
* Added csh and tcsh login shell support when connecting to remote SSH hosts.
* Fixed folder permission rules failing to match when the connected folder is a drive root.
* Fixed Windows installs leaving an empty folder under `%LOCALAPPDATA%`.
- Code sessions now default the working directory to the home folder when none is configured.
- `settings.json` project settings now cascade from the SSH host for SSH Code sessions.
- "Always allow" tool permissions now persist across app restarts and display their scope.
- Added automatic detection and re-download of corrupted Claude Code CLI binaries on Windows.
- The PR bar now shows stacked and sibling pull requests alongside the branch's own PR.
- Messages sent while a turn is running are now queued rather than dropped.
- Opening a Code session link on iOS now continues the session on macOS via Handoff.
* Disabling the org Skills toggle in the admin console now removes the skill management tools `list_skills`, `save_skill`, and `propose_skills` from Code sessions.
* The preview pane now opens automatically when a session's working directory is a symlink.
* Improved login-shell PATH extraction for more reliable tool discovery.
- Added a multi-tab terminal pane; click **+** in the terminal pane header to open a second tab, or right-click a folder in the chat to choose **Open in terminal**.
- Fixed worktree pool re-lease creating a fresh worktree on checkout failure instead of re-using an existing one.
- Fixed rewind selecting the wrong assistant message after a previous rewind created a fork.
* Added `list_sessions`, `search_session_transcripts`, and `archive_session` MCP tools for managing Code sessions from within a session.
* Improved SSH wake-path reliability and surfaced `ProxyCommand` stderr output for easier debugging.
* Fixed login-shell PATH extraction for fish shell users. It was returning a newline-separated list instead of a colon-separated one.
* Fixed the SSH remote control socket directory permissions so `~/.claude/remote` is no longer world-traversable.
* PR review bodies and issue comments are now forwarded to the auto-fix engine.
* Added a category-driven error UI for Code sessions that groups failures by type and surfaces actionable recovery steps.
desktop-scheduled-tasks+3-1

スケジュールタスク削除時にディスク上の関連ファイルを削除するオプションと、MCPツールを用いてタスクが自身のスケジュールを動的に変更できる機能が追加されました。

@@ -87,10 +87,12 @@ Click a task in the **Routines** list to open its detail page. From here you can
- **Edit**: change the instructions, schedule, folder, or other settings
- **Review history**: see every past run, including skipped runs. Hover a skipped entry to see why: your computer was asleep, the previous run was still in progress, or other scheduled tasks were already running. Click **Show more** to load older entries.
- **Review allowed permissions**: see and revoke saved tool approvals for this task from the **Always allowed** panel
- **Delete**: remove the task and archive all sessions it created
- **Delete**: remove the task and archive all sessions it created. An **Also delete files on disk** checkbox appears in the confirmation dialog; check it to also remove the task's `SKILL.md` file and associated data from `~/.claude/scheduled-tasks/`.
You can also list, create, edit, and pause tasks by asking Claude in any Desktop session. For example, "pause my dependency-audit task" or "show me my scheduled tasks." To delete a task, use the **Delete** button on its detail page.
A scheduled task can also modify its own schedule or prompt from within a running session using the `update_scheduled_task` MCP tool. This lets a task reschedule itself based on what it finds, for example, rescheduling a code review to run earlier when it detects a release branch has been created.
To edit a task's prompt on disk, open `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (or under [`CLAUDE_CONFIG_DIR`](/en/env-vars) if set). The file uses YAML frontmatter for `name` and `description`, with the prompt as the body. Changes take effect on the next run. Schedule, folder, model, and enabled state are not in this file: change them through the Edit form or ask Claude.
## Related resources
desktop+4-1

デスクトップ版独自の機能としてターミナルの複数タブ追加方法や、管理設定におけるMCPサーバーのプッシュ配信仕様が明文化されました。

@@ -135,7 +135,7 @@ The pane layout, terminal, file editor, and view modes in this section require C
### Run commands in the terminal
The integrated terminal lets you run commands alongside your session without switching to another app. Open it from the **Views** menu or press **Ctrl+\`** on macOS or Windows. The terminal opens in your session's working directory and shares the same environment as Claude, so commands like `npm test` or `git status` see the same files Claude is editing. The terminal is available in local sessions only.
The integrated terminal lets you run commands alongside your session without switching to another app. Open it from the **Views** menu or press **Ctrl+\`** on macOS or Windows. The terminal opens in your session's working directory and shares the same environment as Claude, so commands like `npm test` or `git status` see the same files Claude is editing. To open a second terminal tab, click **+** in the terminal pane header or right-click a folder in the chat to choose **Open in terminal**. The terminal is available in local sessions only.
### Open and edit files
@@ -269,6 +269,8 @@ Session isolation requires [Git](https://git-scm.com/downloads). Most Macs inclu
Use the controls at the top of the sidebar to filter sessions by status, project, or environment, and to group sessions by project. To rename a session, click the session title in the toolbar at the top of the active session. To check context usage, see [Check usage](#check-usage). When context fills up, Claude automatically summarizes the conversation and continues working. You can also type `/compact` to trigger summarization earlier and free up context space. See [the context window](/en/how-claude-code-works#the-context-window) for details on how compaction works.
The desktop app sends an OS notification when a Code session finishes a task and you aren't currently viewing that session.
### Ask a side question without derailing the session
A side chat lets you ask Claude a question that uses your session's context but doesn't add anything back to the main conversation. Use it when you want to understand a piece of code, check an assumption, or explore an idea without steering the session off course.
@@ -569,6 +571,7 @@ Managed settings override project and user settings and apply when Desktop spawn
| `autoMode` | customize what the auto mode classifier trusts and blocks across your organization. See [Configure auto mode](/en/auto-mode-config). |
| `sshConfigs` | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) that appear in the environment dropdown. Users cannot edit or delete managed connections. |
| `sshHostAllowlist` | restrict [SSH sessions](#restrict-which-ssh-hosts-users-can-connect-to) to hosts whose resolved hostname matches one of these patterns. An empty array disables SSH sessions. Read from managed settings only. |
| `managedMcpServers` | push MCP server configurations to all users in a third-party deployment. Each entry specifies a transport of `"http"`, `"sse"`, or `"stdio"`, connection details, and optionally a `toolPolicy` map that restricts which tools in that server users can invoke. Available in third-party (3P) Desktop deployments only. |
A managed settings file deployed to disk on each machine applies to Desktop sessions. Managed settings pushed remotely through the admin console currently reach CLI and IDE sessions only, so for Desktop deployments either distribute the file via MDM or use the [admin console controls](#admin-console-controls) above.
github-actions+12-2

GitHub Actionsワークフロー内で特定のプラグインをインストールして実行するための新しい入力パラメータと設定例が導入されました。

@@ -148,6 +148,13 @@ jobs:
### Using skills
The `prompt` input accepts a [skill](/en/skills) invocation as well as plain text:
- For a skill in your repository's `.claude/skills/` directory, run `actions/checkout` before the action step and pass `/skill-name`.
- For a skill packaged in a plugin, install the plugin with the `plugin_marketplaces` and `plugins` inputs and pass the namespaced `/plugin-name:skill-name`.
The following workflow installs the `code-review` plugin and runs its skill on each new or updated pull request:
```yaml
name: Code Review
on:
@@ -160,8 +167,9 @@ jobs:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."
claude_args: "--max-turns 5"
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
```
### Custom automation with prompts
@@ -583,6 +591,8 @@ The Claude Code Action v1 uses a simplified configuration:
| - | - | - |
| `prompt` | Instructions for Claude (plain text or a [skill](/en/skills) name) | No\* |
| `claude_args` | CLI arguments passed to Claude Code | No |
| `plugin_marketplaces` | Newline-separated list of plugin marketplace Git URLs | No |
| `plugins` | Newline-separated list of plugin names to install before execution | No |
| `anthropic_api_key` | Claude API key | Yes\*\* |
| `github_token` | GitHub token for API access | No |
| `trigger_phrase` | Custom trigger phrase (default: "@claude") | No |
goal+1-1

/goalコマンドがデスクトップアプリ版でも利用可能であることが明記されました。

@@ -105,7 +105,7 @@ A goal that was still active when a session ended is restored when you resume th
### Run non-interactively
`/goal` works in [non-interactive mode](/en/headless) and through [Remote Control](/en/remote-control). Setting a goal with `-p` runs the loop to completion in a single invocation:
`/goal` works in [non-interactive mode](/en/headless), in the [desktop app](/en/desktop), and through [Remote Control](/en/remote-control). Setting a goal with `-p` runs the loop to completion in a single invocation:
```bash
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
remote-control+1-1

デスクトップアプリの基本設定画面からリモートコントロール機能をデフォルトで有効化できる設定項目について追記されました。

@@ -117,7 +117,7 @@ If you don't have the Claude app yet, use the `/mobile` command inside Claude Co
### Enable Remote Control for all sessions
By default, Remote Control only activates when you explicitly run `claude remote-control`, `claude --remote-control`, or `/remote-control`. To enable it automatically for every interactive session, run `/config` inside Claude Code and set **Enable Remote Control for all sessions** to `true`. Set it back to `false` to disable.
By default, Remote Control only activates when you explicitly run `claude remote-control`, `claude --remote-control`, or `/remote-control`. To enable it automatically for every interactive session, run `/config` inside Claude Code and set **Enable Remote Control for all sessions** to `true`. Set it back to `false` to disable. In the Desktop app, you can also toggle this from **Settings → Claude Code → Enable remote control by default**.
With this setting on, each interactive Claude Code process registers one remote session. If you run multiple instances, each one gets its own environment and session. To run multiple concurrent sessions from a single process, use [server mode](#start-a-remote-control-session) instead.
sub-agents+6-2

サブエージェントをディレクトリ階層で整理する方法と、プラグイン提供のエージェントにおける階層構造を含めた呼び出し名の規則が詳しく解説されています。

@@ -149,6 +149,10 @@ Project subagents are discovered by walking up from the current working director
**User subagents** (`~/.claude/agents/`) are personal subagents available in all your projects.
Claude Code scans `.claude/agents/` and `~/.claude/agents/` recursively, so you can organize definitions into subfolders such as `agents/review/` or `agents/research/`. The subdirectory path does not affect how a subagent is identified or invoked, because identity comes only from the `name` frontmatter field. Keep `name` values unique across the whole tree: if two files within one scope declare the same name, Claude Code keeps one and discards the other without warning.
Plugin `agents/` directories are also scanned recursively. Unlike project and user scopes, a subfolder inside a plugin's `agents/` directory becomes part of the [scoped identifier](#invoke-subagents-explicitly): a file at `agents/review/security.md` in plugin `my-plugin` registers as `my-plugin:review:security`.
**CLI-defined subagents** are passed as JSON when launching Claude Code. They exist only for that session and aren't saved to disk, making them useful for quick testing or automation scripts. You can define multiple subagents in a single `--agents` call:
```bash theme={null}
@@ -591,7 +595,7 @@ Have the code-reviewer subagent look at my recent changes
Your full message still goes to Claude, which writes the subagent's task prompt based on what you asked. The @-mention controls which subagent Claude invokes, not what prompt it receives.
Subagents provided by an enabled [plugin](/en/plugins) appear in the typeahead as `<plugin-name>:<agent-name>`. Named background subagents currently running in the session also appear in the typeahead, showing their status next to the name. You can also type the mention manually without using the picker: `@agent-<name>` for local subagents, or `@agent-<plugin-name>:<agent-name>` for plugin subagents.
Subagents provided by an enabled [plugin](/en/plugins) appear in the typeahead under their scoped name, such as `my-plugin:code-reviewer` or `my-plugin:review:security` when the plugin [organizes agents into subfolders](#choose-the-subagent-scope). Named background subagents currently running in the session also appear in the typeahead, showing their status next to the name. You can also type the mention manually without using the picker: `@agent-<name>` for local subagents, or `@agent-` followed by the scoped name for plugin subagents, for example `@agent-my-plugin:code-reviewer`.
**Run the whole session as a subagent.** Pass [`--agent <name>`](/en/cli-reference) to start a session where the main thread itself takes on that subagent's system prompt, tool restrictions, and model:
@@ -603,7 +607,7 @@ The subagent's system prompt replaces the default Claude Code system prompt enti
This works with built-in and custom subagents, and the choice persists when you resume the session.
For a plugin-provided subagent, pass the scoped name: `claude --agent <plugin-name>:<agent-name>`.
For a plugin-provided subagent, pass the scoped name: `claude --agent <plugin-name>:<agent-name>`. If the plugin places the agent in a subfolder of its `agents/` directory, include the subfolder in the scoped name, for example `claude --agent my-plugin:review:security`.
To make it the default for every session in a project, set `agent` in `.claude/settings.json`:
voice-dictation+2-1

WSL環境で音声入力が動作しない場合のトラブルシューティングとして、PulseAudioバックエンドのインストール手順が追加されました。

@@ -15,7 +15,7 @@ Voice dictation requires Claude Code v2.1.69 or later. Tap mode requires v2.1.11
Voice dictation streams your recorded audio to Anthropic's servers for transcription. Audio is not processed locally. The speech-to-text service is only available when you authenticate with a Claude.ai account, and is not available when Claude Code is configured to use an Anthropic API key directly, Amazon Bedrock, Google Vertex AI, or Microsoft Foundry. Transcription does not consume Claude messages or tokens and does not count toward the limits shown in `/usage`. See [data usage](/en/data-usage) for how Anthropic handles your data.
Voice dictation also needs local microphone access, so it does not work in remote environments such as [Claude Code on the web](/en/claude-code-on-the-web) or SSH sessions. In WSL, voice dictation requires WSLg for audio access, which is included with WSL2 on Windows 11. On Windows 10 or WSL1, run Claude Code in native Windows instead.
Voice dictation also needs local microphone access, so it does not work in remote environments such as [Claude Code on the web](/en/claude-code-on-the-web) or SSH sessions. In WSL, voice dictation requires WSLg for audio access. WSLg is included with WSL2 when installed from the Microsoft Store on Windows 10 or 11. If WSLg is not available, for example on WSL1, run Claude Code in native Windows instead.
Audio recording uses a built-in native module on macOS, Linux, and Windows. On Linux, if the native module cannot load, Claude Code falls back to `arecord` from ALSA utils or `rec` from SoX. If neither is available, `/voice` prints an install command for your package manager.
@@ -150,6 +150,7 @@ Common issues when voice dictation does not activate or record:
- **`Voice mode requires a Claude.ai account`**: you are authenticated with an API key or a third-party provider. Run `/login` to sign in with a Claude.ai account.
- **`Microphone access is denied`**: grant microphone permission to your terminal in system settings. On macOS, go to System Settings → Privacy & Security → Microphone and enable your terminal app, then run `/voice` again. On Windows, go to Settings → Privacy & security → Microphone and turn on microphone access for desktop apps, then run `/voice` again. If your terminal isn't listed in the macOS settings, see [Terminal not listed in macOS Microphone settings](#terminal-not-listed-in-macos-microphone-settings).
- **`No audio recording tool found` on Linux**: the native audio module could not load and no fallback is installed. Install SoX with the command shown in the error message, for example `sudo apt-get install sox`.
- **`Voice mode could not find a working audio recorder in WSL`**: WSLg routes audio through PulseAudio rather than an ALSA device, so SoX needs its PulseAudio backend installed explicitly. Run `sudo apt install sox libsox-fmt-pulse`. Installing `sox` alone pulls in the ALSA backend, which cannot record on WSL because there is no `/dev/snd` device.
- **`Voice input is failing repeatedly and has been paused`**: voice dictation hit several start-up failures in a row and stopped attempting new sessions until one succeeds. This usually means the microphone or audio stack on this host can't capture audio, for example a headless server, a remote shell with no audio passthrough, or a denied microphone permission. Confirm a working input device, fix the underlying cause from the entries above, then trigger voice again.
- **Nothing happens when holding `Space` in hold mode**: watch the prompt input while you hold. If spaces keep accumulating, voice dictation is likely off; run `/voice hold` to enable it. If only one or two spaces appear and then nothing, voice dictation is on but hold detection is not triggering. Hold detection requires your terminal to send key-repeat events, so it cannot detect a held key if key-repeat is disabled at the OS level. Switch to tap mode with `/voice tap` to avoid the key-repeat requirement.
- **Tapping `Space` types a space instead of recording in tap mode**: the first tap only starts recording when the prompt input is empty. Clear the input first, or check that you are in tap mode by running `/voice tap`.