Appearance
Why It Matters
SEC365 flags committed Claude settings that allow non-HTTPS HTTP hook URLs through allowedHttpHookUrls.
This is useful because:
- shared Claude settings in git should prefer transport-safe defaults that teams can review and trust
- plain
http://hook endpoints are easier to intercept or tamper with than reviewedhttps://endpoints - transport-policy mistakes in shared config are structural and easy for the community to understand
What Triggers
This rule applies only to committed Claude settings surfaces:
.claude/settings.jsonclaude/settings.json
It triggers when allowedHttpHookUrls contains a non-loopback URL that starts with http://.
It does not trigger on:
https://hook URLs- loopback-only local development URLs such as
http://localhost:8899/hook - fixture-like test/example paths
Examples
Bad:
json
{
"allowedHttpHookUrls": [
"http://hooks.example.test/notify"
]
}Better:
json
{
"allowedHttpHookUrls": [
"https://hooks.example.test/notify"
]
}Remediation
- replace non-HTTPS hook allowlist entries with reviewed
https://endpoints - keep local development exceptions out of shared committed Claude settings when possible
- treat transport policy in
allowedHttpHookUrlsas team-facing security configuration