Eu não chequei libgit2 , mas nem git nem vários $PATH usuários - como a função Glibc execvpe() e vários shells ( traço , bash ) - suporta qualquer forma de escape - se um nome de diretório contiver um : , ele simplesmente não poderá ser usado como parte de variáveis de ambiente relacionadas ao caminho.
No Windows, o separador de caminho é ; - você deve ser capaz de usar PATH_SEP ou uma constante semelhante para encontrar o valor - e, novamente, o escape não é suportado em lugar algum.
Se o usuário der a você um caminho como /usr/foo:bar , eles podem estar esperando que ele seja dividido em dois diretórios, então faça isso.