Skip to content

relix profiles set | get | ls | rm, and keeping a project trusted across the command's own edits #56

Closed

Description

@david-Darkcollective

relix profiles lists profiles today (§3). It gains verbs to set placeholder values, so a credential never has to be typed into profiles.json by hand. This issue also carries the trust rule every command that writes under .relix/ uses (init, this, and source/connection).

relix profiles ls                               # rows: profile, variable, file (never the value)
relix profiles set staging WAREHOUSE_PASSWORD   # hidden prompt; or the value on stdin
op read op://acme/wh/password | relix profiles set production WAREHOUSE_PASSWORD
relix profiles get staging WAREHOUSE_URL        # the value, on stdout
relix profiles rm staging WAREHOUSE_PASSWORD
  • The value never comes from an argument: a hidden prompt on a terminal, stdin otherwise, so it stays out of shell history and ps.
  • Writes the nearest project's profiles.json, or ~/.relix/profiles.json with --user, creating it at 0600 and refusing one that is looser, as reading does (§5.4).
  • Warns when profiles.json is tracked by git (git ls-files --error-unmatch, when git is on the PATH).
  • get prints a value, because a pipeline may need one; ls never does.

Trust survives the command's own edits

Any change under a trusted .relix/ untrusts it (§5.4), so without care every profiles set or source add would be followed by a warning and a catalog trust. Before writing, the command checks whether the directory is trusted and its files still match the recorded hash. If both hold, it records the new hash after writing and the project stays trusted. If not, it stays untrusted after the write too, so a change someone else made is still reviewed before it loads. The command says which happened, on stderr.

Done when

Each verb works at project and --user scope, no value appears in argv, stdout of ls or any file but profiles.json, and the trust rule is tested in both directions: a trusted, unchanged project stays trusted; an untrusted or externally changed one stays untrusted.

Activity

  1. added this to the 1.0.0 milestone on Oct 14, 2026
  2. github-actions commented on Oct 16, 2026

    @github-actions

    Done in #61, merged to develop (e6fcaa8).

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:cliThe relix command itselfenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions