The message ended up sending an earlier copy. The intended content included this block: if self.closed: key_urls = '\n'.join((' '.join(keyurl) for keyurl in key_urls)) result = subprocess.run( ('git', 'annex', 'registerurl', '--batch'), input=keyurls, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True, text=True ) for line in result.stdout: self._debug(line) for line in result.stderr: self._info(line) The code is behaving as if the block is not executed, even though self.closed is True. I guess I'll verify that it did indeed execute. I'd also like to see whether that command has output, and enable verbose mode if it has one.