Better CLI Interactions for Agents and Humans | Pulumi BlogSkip to main content<br>It’s launch week! The agentic infrastructure era is here, and we’ve got some new things to share.<br>Read the blog
25.2K<br>Contact us<br>Sign in<br>Dashboard<br>Get started<br>25.2K<br>Contact us<br>Sign in<br>Dashboard<br>Get started
Navigation
25.2K<br>Contact us<br>Sign in<br>Dashboard<br>Get started<br>Toggle Blog Navigation<br>Pulumi Blog
Program the Cloud<br>Create, deploy, and manage cloud infrastructure using your favorite language.<br>Get started →
Recent Posts<br>Bringing Neo to GitHub and Slack<br>Neo Automations: Scheduled Tasks Shipped as Pull Requests<br>Seven Rules for Building an AI-Native Software Factory<br>Neo, Now in the Terminal<br>Neo Integrations: MCP Servers and Cloud CLIs<br>Ten More Things You Can Do With Pulumi Neo<br>Better CLI Interactions for Agents and Humans<br>The Agentic Infrastructure Era<br>How Building AI Agents Has Changed in 2026<br>The Dark Factory Pattern for Infrastructure: Running Pulumi Lights-Out
pulumi-releases<br>features<br>aws<br>kubernetes<br>ai<br>platform-engineering<br>azure<br>serverless<br>esc<br>infrastructure-as-code<br>secrets<br>security<br>cloud-engineering<br>pulumi-news<br>policy-as-code<br>continuous-delivery<br>containers<br>devops<br>typescript<br>iac<br>python<br>pulumi-cloud<br>automation-api<br>community<br>eks<br>pulumi-events<br>docker<br>pulumi-neo<br>ai-agents<br>google-cloud<br>terraform<br>insights<br>migration<br>cloud-native<br>guest-post<br>javascript<br>lambda<br>pulumi-service<br>yaml<br>best-practices<br>llm<br>packages<br>All blog tags →
Better CLI Interactions for Agents and Humans
Michael Fallihee
Christian Nunciato<br>Posted on May 19th, 2026<br>AI agents do a lot of their work through CLIs. They’re easier to call than HTTP APIs and they produce predictable output. Over the last few months our own CLI traffic has shifted from mostly people typing commands to people and agents running commands together, often in the same session.<br>Today we’re shipping a release built for both. The Pulumi CLI is reorganized around three ideas: the right command should be the one you can guess, anything you can do in Pulumi Cloud should also be doable from the terminal, and what comes back should be just as readable to an agent as it is to a person.<br>Designing for guessability<br>The bar we set was that both developers and coding agents should be able to guess at the right command for a particular task: pulumi env edit to modify an environment, pulumi stack get to see what’s going on with a stack, pulumi org member list to see who’s on the team. If we had to explain which command did what, the usability bar hadn’t been met.<br>Branches in the tree are now singular nouns like stack, env, org, and deployment. Leaves are now verbs from a canonical vocabulary — list, get, set, new, edit, remove — and they mean the same thing wherever they’re used. edit always means modify an existing thing. Wherever the old vocabulary differed, though, the old name still works: ls, rm, update, and open are all aliased to preserve backward compatibility.<br>For the most part, product names have also been replaced with familiar nouns. Users (human or otherwise) don’t think in product names; they think in terms of resources, stacks, environments. For example, take Pulumi ESC: the product may be named ESC (and for a while the command was too), but nobody thinks I need to initialize a new ESC — they think I need to create a new environment. The command is therefore pulumi env new, with esc init preserved as an alias to avoid disrupting anyone’s existing workflows.<br>$ pulumi env new my-project my-env<br>Environment created.
All of Pulumi Cloud in the terminal<br>Up to now, most of what you could do with Pulumi Cloud had to be done either in the browser or through direct API calls. Things like reviewing deployments, setting up webhooks, finding non-compliant resources, or managing deployment settings all required you to break out curl and hit the API docs or open a browser and navigate the Pulumi Cloud console.<br>That changes today. Pulumi Cloud is now fully accessible from the command line through the pulumi CLI, with consistently named nouns and verbs aligned to what you’d expect:<br>pulumi stack get returns a complete stack overview, metadata, resource list, and more:<br>$ pulumi stack get \<br>--stack cnunciato/chris.nunciato.org/production \<br>--output json | jq -r ".resources[].type" | grep "aws:s3"
aws:s3:BucketEventSubscription<br>aws:s3/bucket:Bucket<br>aws:s3/bucket:Bucket<br>aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock<br>aws:s3/bucketWebsiteConfiguration:BucketWebsiteConfiguration<br>aws:s3/bucketOwnershipControls:BucketOwnershipControls<br>aws:s3/bucketNotification:BucketNotification
… with other stack-related commands like pulumi stack history get events, pulumi stack drift list, pulumi stack schedule new, and pulumi stack webhook new alongside it.
Organizational commands like pulumi org member list, pulumi org role list, pulumi org usage get, and pulumi org audit-log export can help you dig into the details when you need to as...