At Browser Use we spend a lot of time thinking about the bitter lesson of agentic frameworks. A few days we did an experiment that combines replacing Playwright with CDP and giving the LLM complete freedom (building with autoresearch from ground up) to do whatever it knows from pretraining.
I think this is the simplest way to give an AI control of a real browser: raw CDP, and let the agent write its own tools. ~600 lines total.
Example: I forgot to implement upload_file(). Mid-task, the agent noticed, wrote the function, and uploaded the file. I found out when I read the git diff.
I haven't found a task that doesn't work yet - but extremely happy to be proven wrong. Give it a shot. Open to criticism on CDP, agent frameworks, browser use, or whatever.