Tangible Bytes

A Web Developer’s Blog

Claude Code: Open Permissions, Hard Limits

I recently started using Claude Code but I found the permission prompts both hard work and unreliable.

Trying to work out what I was agreeing to was hard work - and all too often the agent managed to do things I hadn’t wanted.

So I put Claude in a container I call a devbox and turned the inbuilt soft limits off via --dangerously-skip-permissions Inside the devbox Claude can do whatever it likes. The container decides what can actually be written, where it can connect to, and which credentials it holds, and Claude can’t change any of that from inside.

Read more ...

Digital Ocean Kubernetes Load Balancer Configuration

At work I’m using Digital Ocean and their managed Kubernetes offering - DOKS

The cluster is almost entirely managed via Helm charts - and even system components that are installed via the Digital Ocean “1 Click” installers are Helm charts really.

Recently we ran into a problem where we needed real IP addresses available to our application - but these were being lost to the load balancer - and I needed to configure Proxy Protocol to re-enable them.

Read more ...

Laravel Redis Route Binding

I setup Laravel with Redis and made sure all my articles were cached, and still saw a lot of database traffic.

All the route bound parameters get magically injected - but of course behind the scenes these are looked up in the database.

Although these are simple queries that run pretty fast - a lof of them are repeated very frequently so can be efficiently cached.

Read more ...

Laravel Object Validation Closure

I’m using Laravel Inertia and the resulting form submission returns JSON objects - which I wanted to validate.

In my case I have a quiz - which has questions which in turn have answers and those answers have user-submitted responses.

If the CMS editor tries to delete answers which have responses this will result in an SQL referential integrity error - so I want a validation rule for each answer which says

If the answer object has property “deleted” and the database has responses for this answer - fail.

Read more ...