Sign in

Karl

@karlkfi.bsky.social
552 followers 146 following 833 posts

SF Tech Gamer Car Nerd. AI Infra Tech Lead @ AMD (opinions my own). Previously Google, Cruise, Mesosphere, Pivotal.

PostsRepliesMedia
Karl @karlkfi.bsky.social · 02/10/2026
On building claude-spill-guard: www.reddit.com/r/ClaudeCode...
reddit.com
From the ClaudeCode community on Reddit: I built a Claude Code hook that blocks secrets before they reach the API (and doesn't think your driver version is a phone number)
Explore this post and more from the ClaudeCode community
000
Karl @karlkfi.bsky.social · 26/09/2026
🛡️ spill-guard v0.5.0 A Claude Code hook that stops secrets reaching the API. - AWS access key IDs - GitHub tokens - Slack tokens and Slack webhook URLs - Stripe live secret keys - OpenAI API keys - Google API keys - PEM private keys - JWTs github.com/karlkfi/claude-spill-guard
github.com
GitHub - karlkfi/claude-spill-guard: Keeps secrets and PII from reaching the API through a Claude Code session — a local, zero-dependency scanner at the exfiltration boundary.
Keeps secrets and PII from reaching the API through a Claude Code session — a local, zero-dependency scanner at the exfiltration boundary. - karlkfi/claude-spill-guard
020
Karl @karlkfi.bsky.social · 26/09/2026
🛡️ pr-sentinel v0.12.0 Relaunch the watcher on a CI failure you already chose to ignore, and it stays quiet instead of waking you again. New base_fixed event: your branch predates the fix on main. Rebase, don't re-fix. github.com/karlkfi/clau...
github.com
Release v0.12.0 · karlkfi/claude-pr-sentinel
Wake your session on CI failures and merge conflicts — no foreground polling, no comment-channel injection. ImportantA relaunched watcher no longer wakes you for a failure it already reported. If a...
100
Reposted by Karl
Gwen C. Katz @gwenckatz.bsky.social · 25/09/2026
Fuck ChatGPT flyers. The future is broadsheets.
A crowded broadsheet with way too many fonts. It says:
Forget ChatGPT Flyers
Say it with 
Broadsheets
Unlimited fonts
Stretch them
Or cram a really long sentence into one line for no good reason
No whitespace
Mix capital and lowercase
Pointing hands
(They're called manicules!)
Don't be left behind
Broadsheets are the future
205189375401
Karl @karlkfi.bsky.social · 21/09/2026
After building a dozen Claude Code plugins, I’m pretty convinced that all you really need to do is add a hook that asks “are you sure?”Then just give it an env var to confirm and it will fix it for you and continue. The trick is just identifying all the questionable behaviors and patterns.
320
Karl @karlkfi.bsky.social · 21/09/2026
“Oil is like a chastity belt for starches that just really wanna get it on.” - J. Kenji López-Alt
100
Karl @karlkfi.bsky.social · 20/09/2026
Beach Time
011
Karl @karlkfi.bsky.social · 20/09/2026
TIL you can rent a 2022 electric sports car that stickered at $180k for about $130/day. Depreciation is a hell of a drug.
2022 Porsche Taycan Turbo S near Lake Henshaw in
001
Karl @karlkfi.bsky.social · 14/09/2026
Three things go wrong with prose an agent writes. It's confidently wrong. It's syntactically fine and semantically empty. It's unnecessarily verbose. So I wrote claude-clarity to help with copy editing: - ten Claude Code skills - one output style github.com/karlkfi/claude-clarity
github.com
GitHub - karlkfi/claude-clarity: Ten Claude Code skills and one output style for the last mile of agent work: verifying claims and writing so somebody else can act on them.
Ten Claude Code skills and one output style for the last mile of agent work: verifying claims and writing so somebody else can act on them. - karlkfi/claude-clarity
100
Karl @karlkfi.bsky.social · 14/09/2026
Actions Gateway v1.8.0. A drained worker's job is re-run even if its pod is already gone. Two pools can no longer land on one GitHub runner name: rejected at admission. Worker runner version is now read from the image, not the tag. github.com/actions-gate...
github.com
Release v1.8.0 · actions-gateway/github-actions-gateway
Zero-idle self-hosted GitHub Actions runners for multi-tenant Kubernetes. WarningTwo runner pools that derive the same agent identity are now rejected at admission. Nothing is re-validated when you...
000
Karl @karlkfi.bsky.social · 13/09/2026
🛡️ branch-guard 1.11.0 git -C ../other-worktree push --force It saw the redirect and switched its overlap probe off instead of aiming it at that tree. A push colliding with the moved base was allowed. Now denied. github.com/karlkfi/clau...
000
Karl @karlkfi.bsky.social · 13/09/2026
🛡️ exit-status-guard 2.1.0 make check | tail -5; echo $pipestatus $pipestatus is zsh. The Bash tool runs bash, where it expands to empty. Nothing got recovered, and a failed gate read as a pass. Now denied. github.com/karlkfi/clau...
010
Karl @karlkfi.bsky.social · 13/09/2026
🛡️ foreground-guard 0.7.0 sleep 300 '&' is not backgrounded. Bash hands the quoted & to sleep as an argument and parks the session for five minutes. The guard read it as backgrounded and stood down. Now it denies. github.com/karlkfi/clau...
000
Karl @karlkfi.bsky.social · 13/09/2026
🛡️ prod-guard 2.6.0 stdbuf -oL kubectl --context acme-production delete ns x That deferred. Silently. So did env -S, exec -a, /usr/bin/time -o and sudo -C. Six wrappers hid the command behind them. All six deny now. github.com/karlkfi/clau...
001
Karl @karlkfi.bsky.social · 13/09/2026
🛡️ workspace-guard 1.12.0 cat README.md && python3 -m unittest returned allow. The module ran with no prompt at all. Now it defers. Plus two opt-in postures and three more parser bypasses closed. github.com/karlkfi/clau...
000
Karl @karlkfi.bsky.social · 10/09/2026
🛡️ pr-sentinel v0.10.0 Two sessions rewriting the same function is duplicated work, and review is an expensive place to find it. gh pr create now gets denied when your branch edits lines an open PR already changes. Line ranges, not filenames. github.com/karlkfi/claude-pr-sentinel
github.com
GitHub - karlkfi/claude-pr-sentinel: Secure post-PR babysitting for Claude Code: wake your session on CI failures and merge conflicts — no foreground polling, no comment-channel injection.
Secure post-PR babysitting for Claude Code: wake your session on CI failures and merge conflicts — no foreground polling, no comment-channel injection. - karlkfi/claude-pr-sentinel
210
Karl @karlkfi.bsky.social · 09/09/2026
BART is shut down and all of east bay is trapped in the city tonight.
001
Karl @karlkfi.bsky.social · 08/09/2026
I’m frustrated with CRD versions. They’re not real versions. They’re just namespaces that have to remain forward compatible with conversion webhooks. Can’t ever get rid of anything…
011
Karl @karlkfi.bsky.social · 03/09/2026
With AI assistance, Operations now costs more than Development. The question is not “Build vs Buy” any more. Buying software and operating it yourself takes more effort than operating something you built and own. The question is “Staff it or Outsource it?”
021
Karl @karlkfi.bsky.social · 01/09/2026
What human language has the highest information density?
000
Karl @karlkfi.bsky.social · 27/08/2026
github-actions-gateway v1.6.0 closes the ARC parity checklist. Most workflows now migrate with no workflow changes required. "containerMode: kubernetes" NOT adopted, because its design requires allowing CI jobs to create other pods... a security hole on most clusters. github.com/actions-gate...
github.com
Release v1.6.0 · actions-gateway/github-actions-gateway
Zero-idle self-hosted GitHub Actions runners for multi-tenant Kubernetes. WarningGitHub's minimum runner version is being enforced right now, not at some point in the future. GHEC brownouts began 2...
100
Karl @karlkfi.bsky.social · 26/08/2026
It’s coming. youtu.be/-_3WC47w4dw
youtu.be
The Witcher 3: Wild Hunt – Songs of the Past World Premiere Trailer | gamescom Opening Night Live 20
YouTube video by thegameawards
000
Karl @karlkfi.bsky.social · 25/08/2026
Three months on a side project. Nobody's deadline. I doubled my closing rate and the backlog grew faster. Not all effort compounds. Two questions I now ask before spending a quarter: karlkfi.medium.com/not-all-effo...
karlkfi.medium.com
Not All Effort Compounds
Your output compounds with AI. So do the expectations.
110
Karl @karlkfi.bsky.social · 25/08/2026
🛡️ Five Claude Code guard plugins, one marketplace. Permission rules judge a command by its name. Bash(grep:*) can't tell an in-repo grep from one reading ~/.aws/credentials. The bouncer doesn't care what name you go by. Only how you behave. 🧵 github.com/karlkfi/claude-bouncer
claude-bouncer: Guard rails for Claude Code: workspace boundaries, protected branches, production targets, lost exit status, and foreground time.
100
Karl @karlkfi.bsky.social · 24/08/2026
TFW you run out of tokens
static.klipy.com
Lonely Batman Sits in Heavy Rain
Alt: Tired Batman Sits in Heavy Rain
100
Karl @karlkfi.bsky.social · 21/08/2026
Claude fact checks me now, instead of just the other way around.
000
Karl @karlkfi.bsky.social · 20/08/2026
Looks like Claude Code upstreamed a fraction of the functionality from my workspace-guard plugin upstream, but it’s strictly worse in multiple ways. 😩 github.com/anthropics/c...
github.com
[BUG] Worktree isolation classifies `git -C` paths by leading character: refuses `.` and `~` inside the worktree, allows `$VAR` that escapes it · Issue #88379 · anthropics/claude-code
Preflight Checklist I have searched existing issues and this hasn't been reported yet This is a single bug report (please file separate reports for different bugs) I am using the latest version of ...
100
Karl @karlkfi.bsky.social · 19/08/2026
Instead of foaming milk, I now just put vanilla ice cream in my americanos. I’m just that kinda guy.
000
Karl @karlkfi.bsky.social · 19/08/2026
I have reached enlightenment.
000
Karl @karlkfi.bsky.social · 19/08/2026
I have reached the point with AI software development that running tests and resolving conflicts is now a bottleneck. So I’m trying something crazy: I’m batching serialized streams of backlog items into shared PRs. Wish me luck!
static.klipy.com
Spaceship Traveling Through Stars and Light
Alt: Spaceship Traveling Through Stars and Light (Gotta go fast!)
010
Karl @karlkfi.bsky.social · 19/08/2026
My side project has reached perpetual velocity. With parallel sessions orchestration draining the backlog and session retros filing new backlog items, the backlog now grows faster than it drains. The project is endless. The effort does not compound without critical insight to trigger inflections.
000
Karl @karlkfi.bsky.social · 19/08/2026
What do you do when IT pushes out a forced upgrade requiring reboot and you lose 5-10 parallel sessions you had running in claude code?
000
Karl @karlkfi.bsky.social · 17/08/2026
Relevant! hachyderm.io/@yusef/11702...
Mastadon post by Yusef Napora:

Ethics aside, we can clearly no longer deny the utility of necromancy. Perhaps a year ago, when the pathetic shambling of the animated dead so often made a hollow mockery of our arts. But now! Incantations that once took weeks of toil can be wrested from their tormented souls in mere minutes!

Without the awesome power of the newly dead coursing through our veins, how are we to solve the great problems of our age, like the mysterious disappearance of so many of our elderly and sick friends, or the festering piles of rotten flesh that now clog our streets and homes?

If you still have qualms about using the large soul providers, you can always obtain your own local, free range specimens, although of course they won’t obey quite as faithfully as ones from the leading charnel houses.

Honestly, do you want to be left behind?
010
Karl @karlkfi.bsky.social · 17/08/2026
97.9% of my token traffic on github-actions-gateway has been from re-reading context. Total traffic: 28.76B New tokens (input + output + cache writes): 604.0M Output: 93.4M Output is 0.33% of total traffic. Agentic coding isn't generation. It's mostly re-reading.
Stacked area chart of cumulative tokens over three months. Cache reads fill almost the whole plot, climbing to 28.15 billion and steepening sharply from late July. Cache writes are a thin orange sliver along the bottom axis, labelled 502 million. Vertical markers show two plan upgrades, a new model and a new machine.Line chart of tokens per day on a logarithmic scale over three months. Four series run in parallel bands and never cross, each roughly an order of magnitude below the last: cache reads highest at 28,155 million total, then cache creation at 502 million, output at 93 million, and fresh input lowest and most jagged at 8 million.
320
Reposted by Karl
Picard Tips @picardtips.bsky.social · 15/08/2026
Picard management tip: Humility without confidence is sheepishness. Confidence without humility is arrogance.
213219
Karl @karlkfi.bsky.social · 15/08/2026
“no amount of achievement is enough for the base parameters of the achievement no longer exist.” thunderbird777.substack.com/p/compressed...
thunderbird777.substack.com
Compressed Modernity & The Burnout Society
Speed, Burnout & The Limits Of Development
100
Karl @karlkfi.bsky.social · 14/08/2026
AI has NOT decreased the cost of operations. If anything, operations cost more now, because AI has dramatically increased the demand side of the equation, not just the supply of operational work effort. More changes over time More tests over time More bugs over time More deployments over time
100
Karl @karlkfi.bsky.social · 13/08/2026
Day 89 of building a Kubernetes operator with Claude Code: 1,866 commits 2,111 tests 548M tokens 217k lines authored ~2,527 tokens/line, up 18% from day 80 Except ~200 of that jump was from reflowing docs to one sentence per line. Same words, 18.6k fewer lines, instantly more expensive.
Two charts, May 20 to Aug 12. Top: cumulative tokens per line authored, climbing from 406 to 2,527, nearly flat through July. Bottom: the lines themselves stacked to about 217k, Go code 41k, Go tests 71k, docs 50k, YAML 12k, scripts and web 44k. A grey dotted line at Aug 9 labelled "docs reflow" marks where the docs band notches down about 18k lines and the ratio above steps up.
000
Karl @karlkfi.bsky.social · 12/08/2026
The increase is server and platform demand from AI software development is insane. AI may be saving time in development costs but validation and hosting and network and API costs are all the ~10x. It’s not just datacenters. Infrastructure and platform and SaaS demand is skyrocketing.
150
Karl @karlkfi.bsky.social · 12/08/2026
Maxed out M5 Max
100% CPU - 7,778 threadsA lot of Claude Code sessions managed by a parallel dispatch session.
100
Karl @karlkfi.bsky.social · 12/08/2026
Delegating to Claude isn’t Software Engineering; It’s Management.
000
Karl @karlkfi.bsky.social · 11/08/2026
Does this make me a 20x engineer?
000
Karl @karlkfi.bsky.social · 11/08/2026
I finally used 100% of my Claude Max 20x weekly quota last week. Mostly Opus 5 High Effort. Some Fable for competitive analysis and blog posts. I’m still approving every PR. And this is just my side projects.
000
Karl @karlkfi.bsky.social · 10/08/2026
Multi-user ≠ Multi-tenant Slurm is only multi-user. Kubernetes can be made to be multi-tenant, but it’s not out of the box. Stacking them isn’t going to get you what you want. karlkfi.medium.com/multi-user-i...
karlkfi.medium.com
Multi-User Is Not Multi-Tenant
Scarcity makes coworkers competitors. CI makes strangers roommates.
000
Karl @karlkfi.bsky.social · 10/08/2026
🚀 github-actions-gateway v1.4.0 Zero-idle self-hosted Actions runners on shared Kubernetes. - Cross-namespace proxy sharing, enforced not just served - Runner template library - Abandoned jobs cancel in ~1s, not 15 min - Prometheus gauges for worker-capacity conditions github.com/actions-gate...
github.com
Release v1.4.0 · actions-gateway/github-actions-gateway
Zero-idle self-hosted GitHub Actions runners for multi-tenant Kubernetes. WarningOne required upgrade step, and nothing in this release is breaking. Apply the chart's CRDs before upgrading, or four...
011
Karl @karlkfi.bsky.social · 09/08/2026
Your PR's CI is red. So is main's. pr-sentinel used to wake every session with "diagnose and fix." N sessions, N identical fixes, one rebase conflict for whoever lands second. v0.8.0 checks the base first and holds. github.com/karlkfi/clau...
github.com
Release v0.8.0 · karlkfi/claude-pr-sentinel
Wake your session on CI failures and merge conflicts — no foreground polling, no comment-channel injection. NoteA failing check the base branch is already failing no longer wakes you. The watcher c...
000
Karl @karlkfi.bsky.social · 08/08/2026
Peak AI Waste: I made a PR check to cap the number of em-dashes in a file. Two PRs merged in parallel in the merge queue adding em-dashes, breaking the check on main. Then 5 parallel sessions decided to fix it in different ways, causing cyclic conflicts, rebasing, and retesting.
111
Karl @karlkfi.bsky.social · 08/08/2026
🛡️ workspace-guard 1.9.0 A path is the main way out of a workspace, not the only one. `pkill -f ginkgo` hits every checkout on the host. Unanchored kills now deny: pkill, killall, Stop-Process, taskkill. Both shells, and in `sh -c`. github.com/karlkfi/claude-workspace-guard/releases/tag/v1.9.0
github.com
Release v1.9.0 · karlkfi/claude-workspace-guard
Minor release: the workspace boundary now covers process kills. A path is the main way out of a workspace but not the only one — pkill -f ginkgo reaches every checkout on the host — so an unanchore...
100
Karl @karlkfi.bsky.social · 08/08/2026
Me: Make it horizontally centered. Claude: 10k token later… eh… do I have to?
010
Karl @karlkfi.bsky.social · 08/08/2026
I don’t really know what to say about this except that I enjoyed its ridiculousness. Zimmer’s music is iconic. The image of the rich old guy in kakis surrounded by all the beautiful younger costumed (mostly women) musicians is... I don’t know… both inspiring and distasteful? youtu.be/Lu844oj0fTQ
youtu.be
Hans Zimmer | Live in Concert – The Ultimate Experience
YouTube video by matogolf
110