git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[BUG] protocol.file.allow=always not honored when --local

From
Ffence.borrowing375@passmail.net <fence.borrowing375@passmail.net>
Date
Oct 17, 2025, 02:19 UTC
Message-ID
<176066758616.6.12811000416591629223.957743298@passmail.net>

Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue)

Created an empty directory, then initialized git: `mkdir ~/test && cd ~/test && git init`

Ensured file:// transport protocol is default/unset value (file:// is disabled by default): `git config --list | grep protocol` # no output

Enabled file:// transport for local repository: `git config --local protocol.file.allow always`

Then, attempted to add a git submodule: `git submodule add /path/to/module/.git`

What did you expect to happen? (Expected behavior)

Successful clone: ``` Cloning into '/home/username/test/module'... done. ```

What happened instead? (Actual behavior)

Failed clone: ``` Cloning into '/home/username/test/module'... fatal: transport 'file' not allowed fatal: clone of '/path/to/module/.git' into submodule path '/home/head/data/infra/src/test/git' failed ```

What's different between what you expected and what actually happened?

The default behavior of disabling the file:// protocol should have been overridden by the config, but was not. In contrast, it gets enabled as expected when setting the config user-wide: `git config --global protocol.file.allow always`

I do not want to enable file:// by default due to security implications. I only want to enable it for specific repositories but cannot do so as this setting is not honored when --local.

Anything else you want to add:

A similar error message shows when attempting to update an existing submodule with only the --local config set.

This bug is also present in git version 2.39.5.
[System Info]
git version:
git version 2.51.1.472.g4253630c6f
cpu: x86_64
built from commit: 4253630c6f07a4bdcc9aa62a50e26a4d466219d1
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
rust: disabled
libcurl: 7.88.1
OpenSSL: OpenSSL 3.0.17 1 Jul 2025
zlib: 1.2.13
SHA-1: SHA1_DC
SHA-256: SHA256_BLK
default-ref-format: files
default-hash: sha1
compiler info: gnuc: 12.2
libc info: glibc: 2.36
$SHELL (typically, interactive shell): /bin/bash
Next: Jeff King
Message 1 of 3 in “[BUG] protocol.file.allow=always not honored when --local”
  1. fence.borrowing375@passmail.netOct 17, 2025
  2. Jeff KingOct 17, 2025
  3. fence.borrowing375@passmail.netOct 21, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.