Remediation Playbooks
What to do when a finding lands.
When HAIEC finds an issue, this is the recommended path forward. Playbooks are recommendations — never auto-applied. You decide what changes.

- PB-POLICYIMMEDIATE
Unauthorized network policy change
Triggered when: A network control policy changed without a matching approval record.
- Compare the changed policy against the last approved version.
- If the change was not approved, restore the previous version.
- Turn on policy signing so future changes can be verified.
Verify: The active policy matches an approved, signed version.
- PB-APP-ONBOARDSOON
App signed by unknown publisher
Triggered when: An app tried to join without a signature from a known publisher.
- Keep the app blocked until its publisher is verified.
- Require a signature from a publisher you trust.
- Re-verify the app after a valid signature is provided.
Verify: Only apps from verified publishers can onboard.
- PB-SERVICE-UNKNOWNIMMEDIATE
Unknown service tried to join the network
Triggered when: A service appeared that is not in the service registry.
- Isolate the unknown service so it cannot serve traffic.
- Remove it from the service registry if it was registered.
- Investigate where it came from before allowing it back.
Verify: Every live service traces to a known registered identity.
- PB-SLICE-CROSSSOON
Traffic crossed a network slice boundary
Triggered when: Traffic moved between network slices that should stay separate.
- Enable or restore the isolation policy between the slices.
- Audit the slice configuration to find where the boundary broke.
- Re-test that traffic can no longer cross the boundary.
Verify: No traffic crosses the slice boundary in a repeat check.
- PB-MODEL-DRIFTSOON
AI model behaviour changed from baseline
Triggered when: The model started behaving differently from its approved baseline.
- Compare current model behaviour against the recorded baseline.
- Check whether the training data or model version changed.
- Roll back to the last approved version if the change was not approved.
Verify: Model behaviour matches an approved baseline again.
- PB-EGRESSIMMEDIATE
Data left through an unapproved destination
Triggered when: Outbound traffic went to a destination not on the approved list.
- Block the unapproved destination at the egress control.
- Review the telemetry config to see what was sent and how much.
- Check whether the volume suggests routine traffic or something else.
Verify: All outbound traffic goes only to approved destinations.
- PB-MISSING-FILESINFO
Standard project files are missing
Triggered when: Common project files (manifest, env example, auth config) were not found.
- Add the project manifest file.
- Add a .env.example listing required variables.
- Add an auth configuration file if the project needs one.
Verify: The standard project files exist in the repository.
- PB-CRED-LEAKIMMEDIATE
Credential found in source
Triggered when: A credential value appears inside committed source code.
- Rotate the credential immediately — treat it as exposed.
- Remove the credential from source and use a secret store instead.
- Check access logs for any use of the exposed credential.
Verify: No credentials appear in source and the exposed one is revoked.
- PB-CONTAINER-ROOTSOON
Container running as root
Triggered when: A container is configured to run as the root user.
- Update the pod spec to set a non-root user.
- Add a dedicated non-root user to the container image if needed.
- Redeploy and confirm the container runs unprivileged.
Verify: The container runs as a non-root user in a fresh deploy.
- PB-CERT-EXPIREDSOON
Certificate expired
Triggered when: An active endpoint is still presenting an expired certificate.
- Renew the certificate with the issuing authority.
- Verify the full certificate chain after renewal.
- Review whether the expiry window could have allowed interception.
Verify: The endpoint presents a valid certificate with a clean chain.
- PB-CLOCK-DRIFTSOON
Time source out of sync
Triggered when: Clocks disagree or the time source changed without a config update.
- Check the NTP configuration on the affected systems.
- Verify all systems point at the same trusted time sources.
- Audit the event timeline for gaps while clocks were drifting.
Verify: All sources agree within the accepted drift threshold.
- PB-BUS-UNDECLAREDMONITOR
Message published to undeclared topic
Triggered when: A producer sent a message to a topic it never declared.
- Review the producer configuration for the undeclared topic.
- Check whether the publish was intentional or a config gap.
- Isolate the producer if the traffic was not intended.
Verify: Every producer publishes only to declared topics.
- PB-DATA-BULKSOON
Unusual bulk data read
Triggered when: A principal read a large volume of records in a short window.
- Identify which principal ran the bulk read.
- Check whether the read was authorized for that principal.
- Review retention and export policies for the affected data.
Verify: The bulk read is explained by an authorized job or is revoked.
- PB-DELEGATIONIMMEDIATE
Agent delegation chain anomaly
Triggered when: A delegated action expanded its scope, broke its chain, or ran without an authenticated chain head.
- Re-issue the delegation with the exact scopes the task needs.
- Verify every hop in the chain is authenticated and intact.
- Reject actions that fall outside the declared delegation scope.
Verify: Every delegated action traces to an authenticated, intact chain within declared scope.
- PB-IDENTITYSOON
Agent identity could not be confirmed
Triggered when: An agent identity, credential mapping, or attestation is missing, expired, or mismatched.
- Check the identity registry for the agent record.
- Verify the credential or client id maps to a registered agent.
- Renew expired trust profiles; re-issue missing attestations.
Verify: Every running agent resolves to a registered, attested identity.
- PB-SUPPLY-CHAINIMMEDIATE
Software supply-chain drift
Triggered when: A dependency, artifact hash, signature, or publisher differs from the approved record.
- Compare the observed artifact or dependency against the approved record.
- Block the deployment until the difference is explained.
- Require signed artifacts and pinned versions for future builds.
Verify: Every deployed artifact matches a signed, approved record.
- PB-SERVICE-DISCOVERYSOON
Unexpected service call pattern
Triggered when: A service called outside its registered profile, crossed a boundary, or routed to an unexpected destination.
- Check whether the calling service is registered correctly.
- Verify the routing rules send calls only to expected services.
- Deregister services that should no longer accept calls.
Verify: Every service call resolves through registered profiles and expected routes.
Source of truth: lib/assurance/remediation-playbook-catalog.ts. Rules link to playbooks via playbookRef — see the detection catalog.