Skip to content

Rule Reference

SEC384lintai-ai-securitystableclaude_settingswarn

Claude settings: bare WebSearch permissions

Claude settings permissions allow bare `WebSearch` in a shared committed config

Provider
lintai-ai-security
Surface
claude_settings
Scope
per_file
Tier
stable
Severity
warn
Confidence
high
Detection
structural
Remediation
message_only

Activation Model

Preset Membership

This rule is part of the builtin activation graph through these preset memberships.

Lifecycle

Stable Lifecycle Contract

State

stable_gated

Graduation rationale

Checks shared Claude settings permissions for bare `WebSearch` grants without a reviewed scope.

Deterministic signal basis

ClaudeSettingsSignals exact string detection for bare `WebSearch` inside permissions.allow on parsed Claude settings JSON.

Malicious corpus
claude-settings-unscoped-websearch
Benign corpus
claude-settings-websearch-scoped-safe
structured evidence required remediation reviewed
Canonical note

Structural stable rule intended as a high-precision check with deterministic evidence.

Nearby Signals

Related Rules

SEC384 / CLAUDE-WEBSEARCH-UNSCOPED

SEC384 flags shared Claude settings when permissions.allow grants bare WebSearch instead of a narrower reviewed pattern.

Why It Matters

Bare WebSearch is a broad capability grant. In shared team settings it is easy to cargo-cult into repositories without review, which makes network-search scope harder to reason about than an explicit constrained permission.

Trigger Shape

The rule triggers only when all of these are true:

  • the file is a detected Claude settings surface
  • the path is not fixture-like
  • permissions.allow contains the exact token WebSearch

Clean Cases

These stay clean:

  • WebSearch(*), which is handled by a separate wildcard rule
  • scoped patterns such as WebSearch(site:docs.example.com)
  • fixture-like examples under test or fixture paths

Example Trigger

json
{
  "permissions": {
    "allow": ["WebSearch", "Read(*)"]
  }
}

Safer Example

json
{
  "permissions": {
    "allow": ["WebSearch(site:docs.example.com)", "Read(*)"]
  }
}

How To Fix

Replace bare WebSearch with a narrower reviewed permission pattern, or remove broad search access from the shared Claude settings file.