Author here. Short version: if your agent needs secrets, the common routes are (1) dump them in its env, (2) materialize a .env file, or (3) give it a shell and let it run bws itself. All three have the same problem: the blast radius is everything the token can touch, and prompt injection turns them into full RCE and sadness.
This wraps the bws CLI as an MCP server with explicit CRUD tools for projects and secrets, plus a bws_run that takes an argv array instead of a shell string. First draft of bws_run accepted "sh -c ..."; that's the eval surface I wanted to remove. Shipped version forces explicit program invocation, and if you genuinely want a shell pipeline you have to put sh as argv[0], which is both visible in audit logs and trivially noticed.
A few things I thought worth calling out:
- Destructive tools (*_delete, bws_run) require confirm: true. Not a safety net (the model will set it); a hook point for your approval tooling so you don't have to pattern-match argument shapes.
- Wraps the CLI, not the Rust SDK. Subprocess + JSON parse is 350 lines. SDK path would have been weeks.
- No mocks in the test suite. Three of four integration tests failed against the real bws binary on first run. Caught a bws secret delete returns-plain-text bug that the JSON-stub protocol tests missed.
Code: https://github.com/kvncrw/bws-mcp-server (GPL-3.0). Issues and PRs welcome, especially from anyone running Vaultwarden with Secrets Manager — I don't have one to test against.
I can relate. Sincerely debating whether I quit my well-paying and comfortable corporate job and just go full-time entrepreneur before the opportunities disappear.
I've tried to incorporate the notion that it's none of my business what other people think of me. I don't always get it right, but having that attitude has helped tremendously on reducing my cortisol levels.
What's interesting about these two CEOs is one is definitely interested in selling shovels, the other is interested in selling contracting services that must lease the shovels.
I think you're right though, Meta has real challenges ahead of them in terms of capacity and creating an actual product that can be monetized for the general public. It's worth mentioning that FB was doing AI long before the hype train started really rolling, and monetized it -- all behind the scenes.
The two aren't mutually exclusive, and that's also a misrepresentation of what I said. I believe I said something to the effect of I don't have a lot of sympathy for them
18-year olds make poor life choices all the time, but not all of those choices have repercussions which last 30-50 years.
A $180,000 at 7% interest would require monthly payments of ~$1,200 to pay down after 30 years. Even at 3% it'd still be ~$750.
I'm really skeptical of these types of articles because they don't tell the complete story about their finances and how they're spending money. In 2013 the median rent in Chinatown was ~$600, and the average salary for a resident was $55,000. After taxes that's roughly $3k/month.
While I can empathize here as someone with no degree and a job at FAANG, it's hard for me to have a lot of sympathy. I put the blame squarely on these institutions and our government for this situation.
The institutions should be held liable for this debt, not the tax payer, and our government should not guarantee or subsidize these loans. Higher education is important in our society, but the situation we're in now is a complete disaster.
18-year olds taking on huge debt for useless degrees that can't be bankrupted, what could possibly go wrong?
I'm uncertain how these types of posts are supposed to be taken seriously. Is it normal for people to make a big deal about their personal decision to stop frequenting a particular restaurant or store (or website)?
This wraps the bws CLI as an MCP server with explicit CRUD tools for projects and secrets, plus a bws_run that takes an argv array instead of a shell string. First draft of bws_run accepted "sh -c ..."; that's the eval surface I wanted to remove. Shipped version forces explicit program invocation, and if you genuinely want a shell pipeline you have to put sh as argv[0], which is both visible in audit logs and trivially noticed.
A few things I thought worth calling out:
- Destructive tools (*_delete, bws_run) require confirm: true. Not a safety net (the model will set it); a hook point for your approval tooling so you don't have to pattern-match argument shapes.
- Wraps the CLI, not the Rust SDK. Subprocess + JSON parse is 350 lines. SDK path would have been weeks.
- No mocks in the test suite. Three of four integration tests failed against the real bws binary on first run. Caught a bws secret delete returns-plain-text bug that the JSON-stub protocol tests missed.
Code: https://github.com/kvncrw/bws-mcp-server (GPL-3.0). Issues and PRs welcome, especially from anyone running Vaultwarden with Secrets Manager — I don't have one to test against.