Description
frg init --global reports success and writes the hook entries into
~/.claude/settings.json, but frg init --show --global immediately
afterward reports forge_hooks_installed: false.
Reproduction
Fresh install of frg from the v0.14.0 prebuilt macOS aarch64 release
asset (not built from source), placed at ~/.local/bin/frg.
$ frg --version
frg 0.14.0
$ frg init --global
Installed forge hooks (global) at /Users/abbykearns/.claude/settings.json
Restart Claude Code to activate hooks.
$ frg init --show --global
{
"forge_hooks_installed": false,
"hook_schema_version": "1",
"hook_status": "not_installed",
"settings_path": "/Users/abbykearns/.claude/settings.json"
}
But the hooks are actually present in the settings file:
$ cat /Users/abbykearns/.claude/settings.json
{
...
"hooks": {
"PostToolUse": [
{
"hooks": [
{ "command": "frg hook 2>/dev/null || true", "type": "command" }
],
"matcher": "Bash"
},
{
"hooks": [
{ "command": "frg hook 2>/dev/null || true", "type": "command" }
],
"matcher": "Read"
}
],
"PreToolUse": [
{
"hooks": [
{ "command": "frg hook 2>/dev/null || true", "type": "command" }
],
"matcher": "Read"
}
]
},
...
}
Expected
frg init --show --global should report forge_hooks_installed: true /
hook_status: installed once frg init --global has written the hook
entries, matching the actual content of settings.json.
Actual
--show reports the hooks as not installed even though they are present
in the settings file exactly as frg init --global wrote them.
Environment
- frg 0.14.0 (prebuilt
frg-macos-aarch64.tar.gz release asset)
- macOS 26.2 (BuildVersion 25C56), Darwin 25.2.0, arm64 (Apple Silicon)
- Claude Code settings.json had no prior
hooks key before running frg init --global
Description
frg init --globalreports success and writes the hook entries into~/.claude/settings.json, butfrg init --show --globalimmediatelyafterward reports
forge_hooks_installed: false.Reproduction
Fresh install of
frgfrom thev0.14.0prebuilt macOS aarch64 releaseasset (not built from source), placed at
~/.local/bin/frg.$ frg --version frg 0.14.0 $ frg init --global Installed forge hooks (global) at /Users/abbykearns/.claude/settings.json Restart Claude Code to activate hooks. $ frg init --show --global { "forge_hooks_installed": false, "hook_schema_version": "1", "hook_status": "not_installed", "settings_path": "/Users/abbykearns/.claude/settings.json" }But the hooks are actually present in the settings file:
$ cat /Users/abbykearns/.claude/settings.json { ... "hooks": { "PostToolUse": [ { "hooks": [ { "command": "frg hook 2>/dev/null || true", "type": "command" } ], "matcher": "Bash" }, { "hooks": [ { "command": "frg hook 2>/dev/null || true", "type": "command" } ], "matcher": "Read" } ], "PreToolUse": [ { "hooks": [ { "command": "frg hook 2>/dev/null || true", "type": "command" } ], "matcher": "Read" } ] }, ... }Expected
frg init --show --globalshould reportforge_hooks_installed: true/hook_status: installedoncefrg init --globalhas written the hookentries, matching the actual content of
settings.json.Actual
--showreports the hooks as not installed even though they are presentin the settings file exactly as
frg init --globalwrote them.Environment
frg-macos-aarch64.tar.gzrelease asset)hookskey before runningfrg init --global