THE SECURITY BRUTALIST

Brutalist Application Security (Updated)

After speaking with two Principal Engineers and a CTO, I decided to update the original post on Application Security. We collectively reached a similar conclusion on applying Security Brutalism to application security—especially within CI/CD pipelines that support modern tech stacks and a blend of cloud and local development environments. This approach embraces a philosophy of transparency, visible and unapologetic security measures, and infrastructure-aware controls. It prioritizes clarity over subtlety and enforces protection, even when the implementation feels a bit rough or intrusive.

Here’s how you can apply these principles to your setup:

Core Security Brutalism Tenets in Practice

1. Make Security Controls Visible and Unignorable

2. Immutable, Auditable, and Declarative Pipelines

3. Don't Trust Developer Devices—Verify Everything

For local development:

Security Brutalist twist: If you can't verify commit signatures, reject the merge. Make that policy loudly known.

4. Zero Implicit Trust in CI/CD

Remember: Sign everything. Make developers see the cryptographic chain instead of hiding it behind trust-on-first-use assumptions.

5. Loud, Inflexible Policy Enforcement

Examples:

6. Expose Risk Visibly in Git or UI

Security Brutalist Example Flow: Secure CI/CD Pipeline

[Developer]

Local dev in Gitpod (containerized)

Pre-commit hooks run Semgrep, secrets scanner

Signed commit pushed → GitHub

[CI/CD: GitHub Actions]


[CD]

Final Security Brutalist Recommendations

Security Brutalism focuses on truth over comfort. Make the security rules visible, inflexible, and codified into your developer lifecycle—both locally and in the cloud.