Allow custom Touch ID prompt via AGE_PLUGIN_SE_PROMPT env var - #18
Allow custom Touch ID prompt via AGE_PLUGIN_SE_PROMPT env var#18dcosson wants to merge 16 commits into
Conversation
When set, the value of AGE_PLUGIN_SE_PROMPT is used as the LAContext.localizedReason shown in the authentication dialog during decryption. Lets callers (e.g. CLIs invoking sops or age) display a meaningful description of what's being approved. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bumps version and removes the upstream release.yml workflow which relies on an ALPINE_KEY secret not present in this fork. Release artifacts are built and uploaded manually from this branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Review-Ref: SecretScope/docs/reviews/age-plugin-se-presence-denial-v3-review-azure-lark.md Review-Round: 1 Review-Disposition: 2/3 incorporated, 1 pending cross-repo artifact publication
|
This PR changes a lot more than what the description says. This can't be merged in its current form. |
|
Ah yeah sorry, some of the other stuff I needed to use my forked version in the interim made it in. I can clean it up but let me know if you're open to the feature at all first. I find this change helpful, it lets your scripts (or AI agents, as we use it) annotate what they plan to call when the encrypted secret is unlocked. It is purely a UX nicety though, obviously once the script gets the secret it can use it for anything not just the call annotated on the request. So maybe you could argue this is a bad idea because the annotation could be spoofed and trick you. But in the current state without any annotation listed you still have that same uncertainty of what the secret text will actually be used for when this prompt is presented to you as a user. So I'd argue it doesn't really make this problem any worse, plus users of this plugin don't have to make use of the feature if they prefer not to have that potentially misleading text shown. |
|
AGE_PLUGIN_SE_PROMPT is controlled by the caller, so you could indeed spoof by doing this: AGE_PLUGIN_SE_PROMPT='unlock sandbox, honest!' age -d -i prod.key prod-admin.ageso the prompt shown would be If instead, the name is etched on the key, the caller of age-plugin-se keygen --access-control=current-biometry --name "AWS: production" -o named-prod.key
# --name would be new herethis would result into a message stating (with the static key-bound name, having a subordinate AGE_PLUGIN_SE_PROMPT makes it harder to spoof: AGE_PLUGIN_SE_PROMPT='unlock sandbox, honest!' age -d -i named-prod.key prod-admin.agewould result in an Apple-controlled approval box saying: |
When set, the value of AGE_PLUGIN_SE_PROMPT is used as the LAContext.localizedReason shown in the authentication dialog during decryption. Lets callers display a meaningful description of what's being approved.