If they're gonna work around your "no password via argv" security design, it might be a reasonable thing to jst let them. Anyone who goes:
hide add -n account -u user -p password123
And gets an error message saying "Sorry, you can't put the password into the command,it's a security problem in things like bash_history. Please use STDIN"
Then goes "Fuckit!":
echo 'password123' > hide add -n account -u user -p
Maybe they should be allowed to do that?
(I can almost imagine scenarios where someone might want to use a tool like this in some server automation thing where the security tradesoffs really do make using it like that a not awful idea?)
This is a good point, and I should have been more precise in my original comment :-)
If the program is on a TTY, then reading with echo disabled (i.e., `read -s`) is definitely preferable. I usually have stdin configured as a fallback for when the program isn't on a TTY, for programmatic use.
This has the `echo` problem that you mentioned, but it's strictly better than either argv or the environment (both of which persist throughout the program's lifetime and appear in places like procfs).
For the system keychain, I think we're talking about different use cases, no? The system keychain should be used to store the master password, but using it to pre-store any password you intend to later store in another password manager feels a little silly.
read -s might be a safer way.