# Findings judged safe, so the scanner does not ask about them.
#
# Every line is "<label>\t<path>", and every line needs a reason. This file is
# the allowlist half of #291: the scanner refuses to be quiet by default, and
# adding a line here is the deliberate act that makes it quiet about one
# thing. A line with no reason is a line nobody reviewed.
#
# Judge on what the value IS, not on whether leaking it would matter. "It is
# only an email address" is a decision about consequence; this file is for
# decisions about identity.
#
# An entry covers the subtree beneath it, so `a.b` answers for `a.b[0]` and
# `a.b.c`. That is what makes an array of the same judged-safe thing one line
# rather than one per element - and it is why a broad entry is a broad grant.
# Name the narrowest path that covers what you meant.

# Hashes of API keys the operator approved on the host, not the keys. Claude
# Code stores the last 20 characters, so it is a fragment rather than a
# credential - and dropping it re-prompts inside the sandbox for a decision
# already made outside it.
~/.claude.json	customApiKeyResponses.approved
~/.claude.json	customApiKeyResponses.rejected

# Installation identifiers. Not credentials: they authenticate nothing, and
# they are why a session's own telemetry and cache lookups match the host's.
~/.claude.json	userID
~/.claude.json	machineID

# The signed-in account's own description - address, organisation, roles.
# Identifying, and deliberately kept: a session's UI reflects the real account,
# which is what makes it recognisable as yours. It grants nothing on its own.
~/.claude.json	oauthAccount.emailAddress
~/.claude.json	oauthAccount.accountUuid
~/.claude.json	oauthAccount.organizationUuid
~/.claude.json	oauthAccount.organizationName
~/.claude.json	oauthAccount.organizationRole
~/.claude.json	oauthAccount.workspaceRole
