This also surprised me at first, but yes, this is the way it works. As they say, it's not a bug, it's a feature: :)
https://github.com/hashicorp/vault/issues/182You can treat all of the key/value pairs as one blob, edit that as needed, and write that as JSON, for example.
I've
decided it's easier to just introduce another level into your path, and
write everything with the key "value". So in your case:
vault write secret/uat/app1/passphrase value=xxxxx
vault write secret/uat/app1/encrypt_keys value=xxxxxxx
Not
only do I feel that modifying the read/modify/write cycle is an
unnecessary complication for the client, but I don't like the idea that
if you forget to do this and just blindly write to secret/uat/app1, you
can accidentally overwrite data.
Obviously people are misunderstanding this, so perhaps there should be an issue open to make this clearer in the docs.