Provider trains on prompts

ID

provider-trains-on-prompts

Severity

high (catalogue Medium; platform severity model has no 'medium')

Remediation Complexity

trivial

Remediation Risk

low

Remediation Effort

low

OWASP LLM

LLM02:2025 — Sensitive Information Disclosure

Family

LLM02 — Sensitive Information Disclosure

Red-team vectors

Data Exfil via Markdown

Tags

ai_security

Description

A model client is configured against a provider + plan tier that trains on customer prompts by default, and the client config shows no opt-out. Every prompt sent is disclosed to and retained by the provider for training.

The verdict comes entirely from the bundled, hot-reloadable provider data-sharing policy pack (aisecurity/policy/provider-policy.yml), which maps (provider, tier) to {trains_on_prompts_by_default, opt_out_mechanism, hosting_region}. Because provider terms change out-of-band from the release cycle, a verdict change is a data update, not a detector release. A provider/tier absent from the pack is treated as unknown — never guilty — so no finding is raised.

Examples

llm = ChatMistralAI(model="mistral-small")   (1)
1 Mistral free API tier trains on prompts by default (per the policy pack) and no opt-out is present.

A client whose config carries opt-out evidence (data_sharing_mode: opt_out, an opt-out header) or targets a no-training tier (Azure OpenAI, Vertex AI) produces no finding.

Mitigation / Fix

  • Opt out of training for the provider/tier (see the pack’s opt_out_mechanism).

  • Route to an enterprise / no-training endpoint.

  • Keep the provider-policy pack current so verdicts track the provider’s terms.