You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode/Codium提交报gpg failed to sign the data错误但命令行正常

解决方案

方案1:更换GUI版本pinentry(最推荐,无额外适配成本)

该问题核心原因是你当前使用的pinentry-tty仅支持在终端环境下弹出密码输入交互,VSCode作为GUI程序没有对应的TTY交互通道,会导致gpg-agent调用pinentry时卡住。操作步骤如下:

  1. 根据你的桌面环境安装对应GUI版本的pinentry:
    • GNOME桌面:sudo pacman -S pinentry-gnome
    • KDE桌面:sudo pacman -S pinentry-qt
    • 其他通用桌面:sudo pacman -S pinentry-gtk2
  2. 编辑~/.gnupg/gpg-agent.conf文件,替换原有pinentry配置为你安装的版本路径,例如安装GNOME版则修改为:
    pinentry-program /usr/bin/pinentry-gnome
    
  3. 执行命令重启gpg-agent使配置生效:
    gpg-connect-agent reloadagent /bye
    
  4. 重启VSCode后再次测试提交,此时会弹出独立的GUI密码输入框,输入后即可正常完成签名提交。

方案2:保留pinentry-tty的适配方法

如果你坚持使用终端版pinentry,需要让VSCode进程能够读取到GPG_TTY环境变量,可选择以下任意一种操作:

  • 每次从已打开的终端中启动VSCode,此时VSCode会继承终端的环境变量,可正常触发终端内的密码输入
  • 将export GPG_TTY=$(tty)写入~/.xprofile(X11环境)或~/.config/environment.d/99-gpg.conf(Wayland环境),登录后全局生效
  • 若你使用Flatpak版本的VSCode/Codium,需要额外授予程序访问gnupg目录的权限:flatpak override --filesystem=~/.gnupg com.visualstudio.code

配置完成后如果仍有异常,可执行pkill gpg-agent杀死所有遗留的gpg-agent进程,再次提交时会自动拉起新的进程加载配置。


内容的提问来源于stack exchange,提问作者Darktortue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:27:02