Add CLI commands to create and delete saved SSH servers - #10
giraypultar wants to merge 1 commit into
Conversation
Headless installs can now register servers with `vibeshell servers add user@host[:port]` and remove them with `vibeshell servers delete`, without opening the desktop UI. Optional flags cover the Add Server dialog fields (jump host, agent forwarding, post-login command, group, tags). Passwords come from SSH_PASSWORD or VIBESHELL_PASSWORD; keys from --identity.
veithly
left a comment
There was a problem hiding this comment.
Thank you for the focused CLI server-management contribution and its parser/backend tests. This is useful, but I am holding it out of 1.1.0 pending the following correctness and security fixes. The PR now targets dev, our integration branch; please rebase onto current dev.
- Preserve exact secret bytes. env_nonempty() and the backend add_server_spec() path trim passwords/passphrases. Leading or trailing spaces can be part of a valid secret; validate presence separately and do not normalize the value. Add tests for whitespace-bearing password and key passphrase round trips.
- Make profile/group/credential changes atomic with the existing metadata/credential transaction model. A credential failure must not leave a partial server, association or sync outbox entry, and delete failures must not remove the secret first. Add injected-failure rollback coverage.
- Redact the new AddServer/spec IPC variant before Debug logging. The current fallback in redact_for_log clones unmatched messages; the new message carries secret-bearing fields. Add a sentinel-secret regression for password, private key and passphrase and check any activity path as well.
Please retain the noninteractive create/delete UX, explicit deletion confirmation and existing tests while addressing these points. Run strict Clippy, workspace tests and the current release-metadata checks against dev. No merge is being performed until the credential invariants are preserved.
|
Re-reviewed on 2026-09-29 at e8fd8d0. The head is unchanged since the earlier changes-requested review and now conflicts with dev, so it is still not safe to merge. The exact-secret-byte, atomic metadata/credential/outbox, and AddServer IPC redaction blockers remain. Two additional compatibility gaps in the current diff should be covered in the revision:
The concrete remediation and acceptance-test plan is in #17, docs/ISSUE_TRIAGE_2026-09.md. Please rebase onto current dev and reuse its transaction/credential paths. This useful feature remains open, not rejected; the existing changes-requested review remains in effect. CI is being moved to manual dispatch, but all required checks are retained. |
Headless installs can now register servers with
vibeshell servers add user@host[:port]and remove them withvibeshell servers delete, without opening the desktop UI.SSH_PASSWORDorVIBESHELL_PASSWORD; keys from--identity