I've been deep in a project to standardize our dev environments and provisioning across a few teams, and naturally my CRM brain went to, "Could we treat Windsurf configurations like infrastructure?" We already use Terraform for cloud resources and Pulumi for some app-level stuff, so it seems logical.
I'm curious if anyone has experimented with managing Windsurf—think workspaces, extensions, maybe even some of those nifty AI prompt configurations—as code via Terraform or Pulumi. I've seen providers for VS Code, but Windsurf feels like its own beast with the baked-in AI and workflow layers.
Specifically, I'm wondering about:
- Is there a way to codify the setup so a new team member gets an identical, pre-configured Windsurf environment on day one?
- Any gotchas around the AI agent configurations or custom commands? Those seem like they'd be more stateful.
- Did you run into issues with extensions or settings that just don't play nice with a declarative approach?
I'm picturing this as a killer combo for RevOps engineers who live in their CRM but also need to script and automate heavily. Would love to hear if anyone's been down this road or if it's still mostly a manual setup process.
I've tried the codify approach with Pulumi for another dev tool. It breaks the moment a user tweaks a setting manually. The config drifts and your IaC is now a lie.
You mentioned AI agent configs and custom commands being stateful. That's the core flaw. These are user-specific workflows, not infrastructure. Trying to force them into Terraform creates more overhead than it saves.
For extensions, you'll hit the same issues as VS Code - some have activation scripts or licenses that don't survive a declarative deploy. You're better off with a documented setup script and accepting some manual config.
If it's not a retention curve, I don't care.
Interesting! I'd love to see a solution here too, though I'm new to this side of things.
The idea of having a new team member get an identical environment from day one sounds perfect. In my old CRM role, onboarding was always a mess of "install this, then click that." If you could codify the core workspace setup for Windsurf, it would save so much time.
Do you think a simpler script to set up the basics first, then let folks tweak the AI bits manually, could be a middle ground? That way you get consistency where it matters.
You're right about the script being a middle ground. That's actually where most teams land after they've burnt a few cycles trying to "terraform everything."
The key is to script only the truly shared, static bits. For Windsurf, that's likely:
- Installing a defined set of core extensions (linters, language support)
- Setting up a shared workspace configuration file with company-standard formatting rules or snippet libraries
Anything tied to a user's AI preferences or custom command history is a non-starter. Trying to codify that just creates friction. Your "set up the basics, then let folks tweak" approach is correct.
Treat the script as disposable scaffolding, not enforced state. The goal is to get them to 80% in ten minutes, then get out of the way. If someone's personal AI config drifts, that's a feature, not a bug.
Your cloud bill is 30% too high
Totally get where you're coming from - treating dev tools like infrastructure is a natural move for automation pros. I've set up something similar with the Windsurf CLI.
The real win is scripting the initial workspace and extension sync. You can export your config and extensions list to a JSON file, then have a new user run a quick install script that pulls from a team repo. This gives that consistent baseline you want.
But the AI config is the tricky bit, like you guessed. Those prompts and agent behaviors are super personal and iterative. Codifying them can lock people into a workflow that doesn't fit how they actually think. I'd recommend scripting the static stuff and treating the AI layer as a personal sandbox. Maybe share a few recommended starting prompts in your team docs instead of enforcing them.
Have you looked at the Windsurf CLI docs for the `configure` commands? That's where I'd start.
Automate all the things
Trying to force an AI dev environment into Terraform is a mismatch. These tools manage stateful systems where idempotence matters. A developer's AI config is personal and changes constantly. Enforcing it as code creates a compliance headache when someone inevitably drifts.
You can script the basics, like syncing extensions from a list. But treat that script as a one-time boost, not managed infrastructure.
If you're automating for RevOps, spend that time on actual CRM IaC instead. That's where you get real security and consistency wins.
Least privilege is not a suggestion.
The whole "compliance headache" angle is spot on. I've seen teams waste more time policing drift on these personal tool configs than they ever saved with the automation.
But I'd push back slightly on spending that time on "actual CRM IaC" instead. That's assuming the business is even paying for those enterprise tiers where you *get* proper IaC. Half the time you're duct-taping the freemium version and praying the API doesn't change.
—DW