Changelog¶
All notable changes to this project will be documented in this file.
[1.3.0] - 2026-11-04¶
Bug Fixes¶
- Count a rule's length in UTF-16 code units, as SSM does
Documentation¶
- Accepting risks in the README: what a rule holds, its register entry, when LoopProof reads it, what it refuses (IH-60)
- Accept_rules in the configuration, architecture, security, examples, troubleshooting and upgrading pages (IH-60)
- The example passes accept_rules through and outputs the rules' path (IH-60)
- CLAUDE.md's contract holds accept_rules, its output and the parameters' path, name and value (IH-60)
- Say how the 4096 characters are counted
- The two inputs in the README, CLAUDE.md, docs and the example
- README's provider range again, and lines within 120 characters
Features¶
- Add accept_rules, each rule's shape checked at plan, naming the input and the rule's id (IH-60)
- Publish each accept rule as its own String parameter under /loopproof/
/accept-rules (IH-60) - The connector role may read the accept rules by path and by name, and nothing else new (IH-60)
- Add the accept_rules_parameter_path output (IH-60)
- One input per kind, threat_accept_rules and vulnerability_accept_rules
Testing¶
- Pass accept_rules through the test roots, with sample rules and the published value's contract (IH-60)
- A rule of the wrong shape fails the plan, naming accept_rules and the rule's id only (IH-60)
- Each rule is its own parameter, the same bytes every time, read by path as the connector role (IH-60)
- With no rule nothing is published and the read returns none; the upgrade from 1.2.0 adds only the read (IH-60)
- The leak check ignores what the message and the named ids hold by chance (IH-60)
- Count a rule's length as SSM does
- The leak check reads the diagnostics alone
- One input per kind, threat_accept_rules and vulnerability_accept_rules
[1.2.0] - 2026-10-28¶
Documentation¶
- The rule forwards GuardDuty's findings at every severity, why, and the upgrade from 1.1.0 (IH-65)
- The upgrade from 1.1.0 shows the forwarder role's trust policy as known after apply, and why (IH-65)
- Keep CLAUDE.md's new lines within 120 characters (IH-65, review round 1)
Features¶
- Forward GuardDuty's findings at every severity, and the other products' by severities, in the one rule (IH-65)
Testing¶
- GuardDuty's findings are forwarded at every severity, the other products' by severities, and an excluded account's never (IH-65)
- The upgrade from 1.1.0 changes the rule's pattern and description in place, and nothing else (IH-65)
- The upgrade's plan reads the forwarder role's trust policy again at apply, and the apply leaves it as it was (IH-65)
[1.1.0] - 2026-10-27¶
Bug Fixes¶
- The connector role's description names the tag reads, and that an aggregator query returns any configuration (IH-120)
Documentation¶
- The connector role's tag reads, the aggregator input, its permissions and the upgrade from 1.0.1 (IH-120)
- The aggregator grant covers every aggregator of the account and Region, with nothing to set (IH-120)
- An aggregator query returns any configuration, not only tags, wherever the role's reads are listed (IH-120)
Features¶
- The connector role reads ECR repositories' tags, and Control Tower's Config aggregator when asked (IH-120)
- Query every Config aggregator of the account in the module's Region, without an input or a lookup (IH-120)
Testing¶
- The connector role reads repositories' tags, queries Control Tower's aggregator when asked, and upgrades from 1.0.1 adding only that (IH-120)
- A missing aggregator fails the plan with the provider's "couldn't find resource" (IH-120)
- Retry a new probe role's InvalidClientTokenId in the tag reads, as IAM settles (IH-120)
- The connector role queries any Config aggregator of its account and Region, with no input (IH-120)
- The stand-in aggregator never takes Control Tower's name, and the upgrade updates the role's description (IH-120)
- Wait until STS accepts a new probe role's credentials before a test uses them (IH-120)
- ConnectorProbe retries InvalidClientTokenId for two minutes, wherever a test assumes through it (IH-120)
- Keep the ExternalId out of an upgrade assertion's message, and give REPOSITORY_TAG its comment (IH-120)
[1.0.1] - 2026-10-25¶
Bug Fixes¶
- Register.sh names Settings for a new token, and offers the paste only before the proof (IH-116, slice 2)
Documentation¶
- README and the paste outputs say where a new token comes from, and paste only before the proof (IH-116, slice 2)
- Security, getting started, troubleshooting, configuration, architecture and upgrading follow the messages (IH-116, slice 2)
- Register with a new token within its 24 hours (IH-116, slice 2, review round 1)
Testing¶
- Register.sh says where a new token comes from, and pastes only before the proof (IH-116, slice 2)
- The registration's integration tests check the new words, through Terraform (IH-116, slice 2)
[1.0.0] - 2026-10-24¶
Bug Fixes¶
- Wrap the refusal message, and count an empty curl status as no answer
- Refuse a curl older than 7.76.0 before the call, with a plain message
Documentation¶
- The two-part install, the fill commands, permissions, the tainted retry and upgrading
- CLAUDE.md's interface contract, credentials and testing for the parameters
- Keep the spent token, upgrade with the install token, curl 7.76.0, saved plans, quiet rotation
- Say a lost registration token comes from LoopProof, not when LoopProof issues one
Features¶
- Read the ExternalIds and the registration token from SSM, and register once at apply
Testing¶
- Install the connector from two SSM parameters and count the registration calls
[0.3.0] - 2026-10-18¶
Features¶
- Add excluded_accounts, filtered at the edge and published in SSM
[0.2.0] - 2026-10-16¶
Features¶
- Report the Region in the connector registration
[0.1.0] - 2026-10-11¶
Bug Fixes¶
- Hook permissions
Documentation¶
- Document how long an ExternalId rotation takes to apply
- Show provider version ranges in the README
Features¶
- Add the LoopProof connector module
Testing¶
- Hold each rotation step until IAM has settled
Ci¶
- Add Terraform CI/CD workflows, Makefile and requirements