Install the hooks
Claude Code on macOS, Linux or Windows.
Before installing anything, read the hook script for your platform — hook.sh or hook.ps1: the allowlist at the top is the complete list of what leaves your machine, and the two are line-for-line counterparts. Adding a machine needs an operator to approve it — private beta.
1. Enroll this machine
The enroll script mints an ingest token here, on this machine, and sends the server only its hash. It prints a short code; an operator approves that code on the board, and the script writes your config and fetches the hook script. The token is never displayed, never travels, and never reaches the server — so there is nothing to paste, and nothing for an agent to echo into a transcript.
macOS and Linux — enroll.sh:
curl -fsS https://meathook.ai/enroll.sh -o /tmp/meathook-enroll.sh less /tmp/meathook-enroll.sh # it is short; read it sh /tmp/meathook-enroll.sh
Takes --machine LABEL to suggest a board name (defaults
to the short hostname; the operator can correct it at approval) and
--force to replace an existing config.
Windows — enroll.ps1, native PowerShell, no Git Bash needed:
Invoke-WebRequest https://meathook.ai/enroll.ps1 -OutFile $env:TEMP\meathook-enroll.ps1 notepad $env:TEMP\meathook-enroll.ps1 # it is short; read it powershell -ExecutionPolicy Bypass -File $env:TEMP\meathook-enroll.ps1
Same options, PowerShell-style: -Machine LABEL and
-Force.
2. Optional settings
The script writes ~/.meathook/config.json with the
server URL, your token and the machine label. You can add
"project" (defaults to the repo name),
"prompt_summaries": "true" to show your first prompt of a
session as its board summary, and
"reply_summaries": "true" to replace that with the agent's
latest closing message each turn — both are opt-in verbosity, off by
default, and both scrub token-shaped strings before sending. A
.meathook.json in a repo overrides any of these for that
repo.
3. Register the hooks with Claude Code
Merge the snippet for your platform — claude-hooks.json or claude-hooks-windows.json — into your Claude Code settings. The enroll script prints this command too; it doesn't run it, because it edits your config, not ours.
macOS and Linux, into ~/.claude/settings.json:
curl -fsS https://meathook.ai/claude-hooks.json -o /tmp/mh-hooks.json if [ -f ~/.claude/settings.json ]; then jq -s '.[0] * .[1]' ~/.claude/settings.json /tmp/mh-hooks.json > /tmp/mh-merged.json mv /tmp/mh-merged.json ~/.claude/settings.json else cp /tmp/mh-hooks.json ~/.claude/settings.json fi
Windows, into
%USERPROFILE%\.claude\settings.json:
$s = "$env:USERPROFILE\.claude\settings.json"
$new = Invoke-RestMethod https://meathook.ai/claude-hooks-windows.json
if (Test-Path $s) {
$cur = Get-Content $s -Raw | ConvertFrom-Json
$cur | Add-Member -NotePropertyName hooks -NotePropertyValue $new.hooks -Force
$cur | ConvertTo-Json -Depth 10 | Set-Content $s
} else {
New-Item -ItemType Directory -Force -Path (Split-Path $s) | Out-Null
$new | ConvertTo-Json -Depth 10 | Set-Content $s
}
4. Verify
Hooks load at session start, so already-running sessions won't report. Start a new Claude Code session anywhere and it should appear on the board within a few seconds.