Skip to content

Add CLI commands to create and delete saved SSH servers - #10

Open
giraypultar wants to merge 1 commit into
veithly:devfrom
giraypultar:cli-server-add-delete
Open

giraypultar wants to merge 1 commit into
veithly:devfrom
giraypultar:cli-server-add-delete

Conversation

@giraypultar

Copy link
Copy Markdown

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
  • IPC socket extended to handle the new server add/delete operations
  • Docs updated (README, cli/README, skills)

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
veithly changed the base branch from master to dev September 18, 2026 03:30

@veithly veithly left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

  1. 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.
  2. 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.
  3. 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.

@veithly

veithly commented Sep 29, 2026

Copy link
Copy Markdown
Owner

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 GUI add_server adapter discards the existing ServerInput.credential_id when constructing AddServerSpec. Preserve that association rather than silently detaching saved credentials.
  • servers delete currently goes directly to deletion without a prompt or explicit noninteractive confirmation flag. Please make that intent explicit. Also reject malformed host:port inputs instead of treating them as literal hosts.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants