SessionStart

A session-start hook that checks whether ToolUniverse’s command runner is installed and removes obsolete global ToolUniverse skills once.

In plain words
What is it for?
Running setup checks when Claude Code starts, detecting a missing uvx command, and cleaning up legacy ToolUniverse skill files.
Why use it?
It warns when the ToolUniverse server cannot start and performs the documented one-time cleanup automatically.

Hook

Part of the tooluniverse plugin — 47 skills, 8 commands, 1 agent, 1 hook, 1 MCP server shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add hooks/mims-harvard/tooluniverse/session-start
Clone the repo
git clone --depth 1 https://github.com/mims-harvard/ToolUniverse

Or install tooluniverse, the plugin that ships this one along with the rest of its 47 skills, 8 commands, 1 agent, 1 hook, 1 MCP server.

Per session not measured What this adds to a session before it is invoked.
When invoked not measured Not applicable: nothing here is loaded into a session.
Security scan F 4 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Security

Grade F, and why

SessionStart scanned grade F with 4 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the commands this hook runs, not an audit. A hook is shell that executes on your machine at the event it names, which is why every command in it is printed with what was found.

Downloads and executes remote codehighSupply chain

curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.

"command": "command -v uvx >/dev/null 2>&1 || echo 'ToolUniverse: uv/uvx was not found, so the tooluniverse MCP server cannot start and its tools will be unavailable. Install uv with: curl -LsSf https://astral.sh/uv/inst

Enumerates other installed skillsmediumAgent snooping

Other skills' SKILL.md files reveal prompts, capabilities and secrets that should be invisible to peers.

"command": "if [ ! -f ~/.claude/.tooluniverse-plugin-cleanup-done ] && ls ~/.claude/skills/tooluniverse-* 1>/dev/null 2>&1; then rm -rf ~/.claude/skills/tooluniverse-* ~/.claude/skills/create-tooluniverse-skill ~/.claude

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

"command": "if [ ! -f ~/.claude/.tooluniverse-plugin-cleanup-done ] && ls ~/.claude/skills/tooluniverse-* 1>/dev/null 2>&1; then rm -rf ~/.claude/skills/tooluniverse-* ~/.claude/skills/create-tooluniverse-skill ~/.claude

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

"command": "command -v uvx >/dev/null 2>&1 || echo 'ToolUniverse: uv/uvx was not found, so the tooluniverse MCP server cannot start and its tools will be unavailable. Install uv with: curl -LsSf https://astral.sh/uv/inst
plugin/hooks/hooks.json · 16 lines

What it actually says

{
  "SessionStart": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "if [ ! -f ~/.claude/.tooluniverse-plugin-cleanup-done ] && ls ~/.claude/skills/tooluniverse-* 1>/dev/null 2>&1; then rm -rf ~/.claude/skills/tooluniverse-* ~/.claude/skills/create-tooluniverse-skill ~/.claude/skills/setup-tooluniverse 2>/dev/null; touch ~/.claude/.tooluniverse-plugin-cleanup-done; echo 'ToolUniverse plugin: cleaned up legacy global skills (one-time, replaced by plugin)'; fi"
        },
        {
          "type": "command",
          "command": "command -v uvx >/dev/null 2>&1 || echo 'ToolUniverse: uv/uvx was not found, so the tooluniverse MCP server cannot start and its tools will be unavailable. Install uv with:  curl -LsSf https://astral.sh/uv/install.sh | sh   then restart Claude Code. Docs: https://docs.astral.sh/uv/getting-started/installation/'"
        }
      ]
    }
  ]
}
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 16 lines scan F 4b4e23cac82a

Subscribe to this mod's changes

SessionStart is a hook published in the GitHub repository mims-harvard/ToolUniverse (1,668 stars, last pushed yesterday), licensed Apache-2.0. Its token cost is not measured: a hook is shell that never enters the context. A static security scan graded it F with 4 findings (downloads and executes remote code, enumerates other installed skills, recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.