{"record":{"id":"e3e05b762b00ebd7","repo":"gitui-org/gitui","slug":"config-tag-gpgsign-true-detected-gpg-signing-not","errorCode":null,"errorMessage":"config tag.gpgsign=true detected.\ngpg signing not supported.\ndeactivate in your repo/gitconfig to be able to tag without signing.","messagePattern":"config tag\\.gpgsign=true detected\\.\ngpg signing not supported\\.\ndeactivate in your repo/gitconfig to be able to tag without signing\\.","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/popups/tag_commit.rs","lineNumber":172,"sourceCode":"\n\tfn tag_info(&self) -> (String, Option<String>) {\n\t\tmatch &self.mode {\n\t\t\tMode::Name => (self.input.get_text().into(), None),\n\t\t\tMode::Annotation { tag_name } => {\n\t\t\t\t(tag_name.clone(), Some(self.input.get_text().into()))\n\t\t\t}\n\t\t}\n\t}\n\n\tpub fn tag(&mut self) -> Result<()> {\n\t\tlet gpgsign =\n\t\t\tget_config_string(&self.repo.borrow(), \"tag.gpgsign\")\n\t\t\t\t.ok()\n\t\t\t\t.flatten()\n\t\t\t\t.and_then(|val| val.parse::<bool>().ok())\n\t\t\t\t.unwrap_or_default();\n\n\t\tanyhow::ensure!(!gpgsign, \"config tag.gpgsign=true detected.\\ngpg signing not supported.\\ndeactivate in your repo/gitconfig to be able to tag without signing.\");\n\n\t\tlet (tag_name, tag_annotation) = self.tag_info();\n\n\t\tif let Some(commit_id) = self.commit_id {\n\t\t\tlet result = sync::tag_commit(\n\t\t\t\t&self.repo.borrow(),\n\t\t\t\t&commit_id,\n\t\t\t\t&tag_name,\n\t\t\t\ttag_annotation.as_deref(),\n\t\t\t);\n\t\t\tmatch result {\n\t\t\t\tOk(_) => {\n\t\t\t\t\tself.input.clear();\n\t\t\t\t\tself.hide();\n\n\t\t\t\t\tself.queue.push(InternalEvent::Update(\n\t\t\t\t\t\tNeedsUpdate::ALL,\n\t\t\t\t\t));","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/gitui-org/gitui/blob/2fa693cb6ed431b21ebc300dd02e83c2476699ce/src/popups/tag_commit.rs#L154-L190","documentation":"Before creating a tag, gitui reads tag.gpgsign from the repo/global config (parsing it as bool, defaulting false). gitui's tag creation path does not support GPG signing, so when the config is true it refuses with this multi-line anyhow::ensure! message rather than silently producing an unsigned tag or failing deep inside the tagging call.","triggerScenarios":"tag.gpgsign=true set globally (common in sign-all-the-things setups that also enable commit.gpgsign) or per-repo; opening the tag popup (t in the commit view) and attempting to tag.","commonSituations":"Users with global signing configs; corporate machines with mandated signing policies; dotfiles copied across machines that enable tag signing everywhere.","solutions":["Disable it for the repo only: git config tag.gpgsign false (or git config --unset tag.gpgsign) - keeps the global default intact.","Or unset globally: git config --global --unset tag.gpgsign.","When you want a signed tag, use the CLI instead: git tag -s <name> -m <message>."],"exampleFix":"# before: gitui tag popup refuses\ngit config --global tag.gpgsign true\n# after: per-repo opt-out\ngit config tag.gpgsign false   # tagging in gitui works now\n# or sign from the shell\ngit tag -s v1.0 -m \"release\"","handlingStrategy":"validation","validationCode":"# before opening the tag popup\ngit config --get tag.gpgsign        # any of true/1/on blocks gitui tagging\ngit config tag.gpgsign false         # per-repo opt-out\n\n// Rust: same probe gitui does\nlet gpgsign = get_config_string(&repo, \"tag.gpgsign\").ok().flatten()\n    .and_then(|v| v.parse::<bool>().ok()).unwrap_or_default;\nensure!(!gpgsign(), \"signed tags unsupported\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Scope signing config per-repo instead of globally if you mix CLI and TUI workflows.","Keep git tag -s as the signed-tag path; use gitui for quick unsigned tags.","Remember commit.gpgsign is fine - only tag.gpgsign blocks gitui."],"tags":["git-config","gpg","signing","tag","unsupported-feature"],"backgroundTag":"gpg-signing-not-supported","analyzedSha":"2fa693cb6ed431b21ebc300dd02e83c2476699ce","analyzedAt":"2026-08-16T23:07:36.562Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}