Skip to content

edit: add --field to edit a single field - #367

Open
NanShanFish wants to merge 7 commits into
doy:mainfrom
NanShanFish:feat/edit-field
Open

NanShanFish wants to merge 7 commits into
doy:mainfrom
NanShanFish:feat/edit-field

Conversation

@NanShanFish

Copy link
Copy Markdown

Feature

Add --field to rbw edit, matching rbw get --field. See #365.

Currently rbw edit can only edit password + notes; this lets users edit a
single field (username, name, notes, password, totp, uris, or a custom field)
from the CLI.

Depends on #366 (editing keyed entries must encrypt with the item key and send
the key field, so this branch is based on that fix).

Changes

  • src/bin/rbw/main.rs: add -f/--field to the Edit subcommand
  • src/bin/rbw/commands.rs:
    • split edit into edit_default (existing password + notes flow) and
      edit_field (single-field flow)
    • edit_field: open the editor with the current plaintext value -> parse via
      parse_field_value -> encrypt with the entry key (org / item key) -> update
      the field -> PUT
    • supported fields: username, name, notes, password (records old password
      into history), totp, uris (one per line, preserving existing per-URI match
      types by plaintext match), custom fields (matched by name substring)
    • empty input clears the field; a clear error is raised for fields that are
      not available on the entry type
  • new parse_field_value helper with unit tests

Usage

rbw edit --field username <entry>                       # editor-based
echo "newuser" | rbw edit --field username <entry>      # non-interactive

Testing

  • cargo test (all targets) passes
  • cargo fmt / cargo clippy --all-targets clean

Fixes #365

@devgar

devgar commented Sep 24, 2026

Copy link
Copy Markdown

Hi! I found that editing custom fields always fails on this branch (names are compared while still encrypted), and opened a PR against your branch with a fix plus a few related improvements: NanShanFish#1. Tested against a real vault. Hope it helps get this merged!

devgar and others added 2 commits September 24, 2026 23:16
- fix custom field edits: names were compared against the encrypted
  field names, so no custom field could ever match
- prefer exact, then unique case-insensitive, then unique substring
  matches; error on ambiguity instead of editing the first hit
- fall back to custom fields for built-in names that don't apply to the
  entry type (e.g. 'password' on a secure note), like 'rbw get --field'
- add --create to add a missing custom field as a hidden field
- take piped values verbatim (keep lines starting with '#', trim only a
  single trailing newline)
edit --field: fix custom field edits, exact matching, --create, verbatim stdin
pschmitt added a commit to pschmitt/rbw that referenced this pull request Oct 15, 2026
The value comes from piped stdin (rbw edit --field token ENTRY <<< value)
or from $EDITOR prefilled with the current value, and is saved through
rbw set, so keyed entries, password history and revision checks behave
the same. Built-in fields (name, username, password, notes, totp, uris)
win over custom fields of the same name, as in rbw get --field; a missing
custom field is created as hidden.

Ported from doy#367.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

rbw edit: support editing a single field (--field)

2 participants