lionad-morotar/local-tools/close-cc-host
Claude Code and agent skill by lionad-morotar/local-tools
- community
Checking that the SKILL.md file is still in the repository.
关闭承载当前 Claude Code 会话的宿主(VSCode 窗口或其终端面板),连同 claude 一起退出。通过 close-host-window 扩展触发:先 SIGTERM claude(走完 SessionEnd hooks)再关 host,不抢焦点、不丢 hooks。--host vscode 关窗口、--host terminal(默认)只关终端面板。Use when 任务结束要随宿主退出,或需精确关闭某 claude 终端所在窗口/面板。
Install
npx vskill@latest install lionad-morotar/local-tools/close-cc-hostSKILL.md
close-cc-host
关闭承载当前 claude 会话的宿主(VSCode 窗口 ⊃ 终端面板 ⊃ claude),连同 claude 一起退出。靠 close-host-window 扩展完成,且先 SIGTERM claude 走完 SessionEnd hooks 再关 host —— 直接 dispose terminal 是强杀,会丢 hooks。
核心原理
外部进程没法主动定位/操作 VSCode 窗口(AX 跨 Space 失明、激活抢焦点、CGS/IPC 死路)。扩展可以 —— per-window extension host + workbench.action.closeWindow(不抢焦点、不受 Space 限制)。
但扩展直接 terminal.dispose() 是强杀(SIGHUP/SIGKILL),claude 的 SessionEnd/Stop hook 会丢。正确顺序:SIGTERM claude 进程组(优雅退出,SessionEnd hooks 跑完)→ 等退出 → 再关 host(Docker/k8s/systemd 标准两段式终止)。
前置条件(缺一则静默失败)
- 装 close-host-window 扩展(vsix 本地装;项目
~/Github/Lionad-Morotar/vscode-extension-for-agent) Cmd+Shift+P→Developer: Reload Window激活(onStartupFinished只在窗口启动触发一次)- workspace 可信(
/tmp等不可信 workspace 扩展不激活)
触发
--host 路由(两层都先 SIGTERM claude 走 SessionEnd,再关):
- vscode:socket(新终端
$VSC_WINDOW_CLOSE_HOOK)或哨兵.close-window-signal(老终端)→ closeWindow - terminal(默认):哨兵
.close-terminal-signal→ dispose 活动终端面板
隐藏语义(容器层级)
VSCode 窗口 ⊃ 终端面板 ⊃ claude。--host vscode 关顶层窗口(连带 terminal + claude);--host terminal 只关中间层终端面板(claude 随之退出,窗口保留)。对参数路由无影响,仅交代嵌套关系。
关联机制(cc 怎么找到本窗口的扩展)
cc 不主动找 —— 扩展通过 environmentVariableCollection 把本窗口 socket 路径注入新终端的 $VSC_WINDOW_CLOSE_HOOK(vscode 通道);老终端走哨兵。reload 后 sessionId 变但环境变量自动重铺。详见 references/vscode.md。
坑位(实测血泪)
- 装扩展后必须 reload:
onStartupFinished只在窗口启动触发一次。 - Workspace Trust 拦截:
/tmp等不可信 workspace 扩展不激活,且无报错。 - 直接 dispose = 强杀 = 丢 hooks:扩展已改为 SIGTERM 优雅退出,别绕过扩展直接 kill pty。
- 老终端无 `$VSC_WINDOW_CLOSE_HOOK`:环境变量启动时定型 → 哨兵兜底。
- 哨兵通道一触即发:
touch .close-*-signal在真 workspace 下立即触发关 host。验证务必在mktemp -d隔离目录跑。 - 子模块/worktree 的 `.git` 是文件不是目录:close.sh 找 workspace 根必须用
-e判.git,用-d会越过子模块根把哨兵落到上层父仓(扩展只 watchworkspaceFolders[0],落错位置即静默失败)。 - 关闭即终止当前会话:close.sh 必须最后一条,commit / 存盘提前做完。
解耦
信号分档(SIGTERM/SIGHUP/SIGKILL)+ 扩展机制(per-window host、双通道、SIGTERM 优雅退出)+ 关联机制 + 激活前置 → references/vscode.md
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckinglocal-link/skills/os/mac/close-cc-host/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 13 Oct 2026, 26 days ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/lionad-morotar/local-tools/close-cc-host)