Skip to content

Credential detector

AWS access key ID: format and detection

Updated Credentialspassword or access keyDetector key aws_access_token

Short answer

An AWS access key ID is 20 characters: a prefix of A3T plus one character, AKIA, ASIA, ABIA or ACCA, then 16 characters from A to Z and 2 to 7. Maskflare matches that shape, rejects values ending in EXAMPLE, and requires an entropy of 3.0.

What it is

The access key ID is the public half of an AWS key pair. On its own it does not grant access, but it names the account's credential and sits right next to the secret key in most leaks. The Credentials pack in Maskflare masks it by default.

In Maskflare this is the detector aws_access_token, labelled "AWS access token", category password or access key, in the Credentials pack.

Format

  • Four-character prefix: A3T followed by a letter or digit, or AKIA, ASIA, ABIA or ACCA.
  • 16 characters from the capital letters A to Z and the digits 2 to 7 (the base32 alphabet).
  • 20 characters in total, on word boundaries.

How Maskflare recognises it

Prefix, base32 body of 16 and an entropy floor of 3.0.

Values ending in EXAMPLE are on the allow list, so the key used in AWS documentation is not masked.

The keyword prefilter checks for the five prefixes in lower case.

Why this page shows no sample key

A realistic sample key would look like a live credential to secret scanners and to anyone skimming the page, and an obviously fake one would not pass this detector's length and entropy rules. The format above is enough to recognise the key: the prefix, the length and the character set.

Regex and validation caveats

  • The pattern has no closing-character requirement beyond a word boundary, so a key followed by a comma or full stop matches.
  • Teams that prefer to leave the ID readable can set the rule to alert; the secret key has its own detector.
  • A 20-character capital-letter string that merely starts with one of the prefixes can match; the base32 body and entropy floor reduce that.

How to detect it in LLM traffic

IDs appear in config files, CloudFormation and Terraform snippets, and the output of aws configure or env pasted into an assistant. A coding agent that runs env or prints a credentials file will carry them in a tool result.

Maskflare reads the whole request body, including the system prompt, earlier messages and tool arguments, and replaces each match with a token such as mf_mask_d7e0 before the request goes out. Coding agents are covered through hooks that mask tool inputs and results, so a key printed by a shell command does not travel onward in the next prompt. On ChatGPT, browser protection blocks prompts that contain API keys, tokens or private keys outright.

If you build the detection yourself

  1. Scan the raw text rather than parsed fields: keys sit in code, JSON strings, headers, shell output and pasted logs, often with no label at all.
  2. Match the prefix and the exact length for the AWS access key ID. Where the key has no fixed prefix, require the provider's name and an assignment next to the value instead of matching any long string.
  3. Compute the Shannon entropy of the candidate and reject low values, and keep an allow list of placeholders (${KEY}, repeated characters, the alphabet run), because documentation and templates are full of them.
  4. Mask the value before the text is sent anywhere. If the key was already sent, treat it as exposed and rotate it; masking later does not recall it.

How Maskflare handles it

  • Protect now, Finance - Protect now, Healthcare, Developer and Monitor first: mask (a reversible token).

The available actions are mask (reversible token), redact, partial, hash, format-preserving encryption, generalize, alert and block. Masked values are kept encrypted for 30 days so that answers can be restored, then they expire; prompts and responses are not logged. The full list of detectors is in the detector reference.

Compliance profiles that include it

All 6 compliance profiles include the Credentials pack, and applying them turns this detector on: HIPAA Safe Harbor, GDPR - EU/EEA, UK GDPR, PCI DSS, US personal data and Switzerland - nDSG health data. A profile is a floor: it never turns anything off or weakens a rule that is already stricter.

Frequently asked questions

Are the AWS documentation example keys masked?

A value ending in EXAMPLE is on the allow list, so the documentation key is left alone.

Does Maskflare treat the access key ID as a secret?

It masks it by default because it identifies the credential and is often found next to the secret key. The two have separate detectors.

Is the AWS access key ID detector on by default?

Yes. It belongs to the Credentials pack, which the default Protect now template turns on with the action mask.

Does Maskflare store the keys it masks?

Prompts and responses are not logged. A masked value is kept encrypted for 30 days so the answer can be restored, then it expires.

Rules on this page describe what Maskflare's detectors and validators check. They are read from the detection catalogue and are not the specification of the body that issues the identifier. No sample key is shown on purpose.

Related pages

See it on your own data

Try Maskflare free.
Bring your hardest prompts.

28-day free trial or 10,000 requests, whichever comes first. Point one app at the gateway or enroll a few laptops,
and watch what gets masked. Or talk to us first.