Isso é exatamente o que o ssh-agent faz.
where xyz checks if my key is decrypted, and if it isn't - asks for my passphrase
Você não precisa de nenhum xyz . Basta iniciar ssh-agent no início de sua sessão (por exemplo, em ~/.bashrc ):
[ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent -t 5m)
Configure seu cliente ssh para adicionar as chaves quando elas forem usadas pela primeira vez, definindo
AddKeysToAgent yes
no seu ~/.ssh/config .
and then after N minutes of not invoking xyz it forgets the decrypted value.
Isso é o que a opção -t do ssh-agent faz. Define o tempo limite padrão para as chaves adicionadas (no exemplo acima de 5 minutos).