{"version":"2.1.282","anchor":"cloud-session-git-upload-refuses-when-git-attribute-settings","canonical_anchor":"cloud-session-git-upload-refuses-when-git-attribute-settings","heading":"Cloud uploads and repository copies now check where git attribute and ignore settings come from","tier":"notice","area":"File Sync","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.282\/e\/cloud-session-git-upload-refuses-when-git-attribute-settings","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.282","markdown":"### Cloud uploads and repository copies now check where git attribute and ignore settings come from\n\nCloud session uploads and the private git directory copy now refuse when git attribute or ignore settings come from somewhere they cannot carry along\n\n**Unclear.** Which commands lead to this upload, and whether anything further up limits who reaches it, is not known.\n\n**What**\n\nWhen Claude Code copies a repository somewhere else, for a cloud session upload or for its own private copy of the git directory, it now checks where git's attribute and ignore settings come from and stops if it cannot carry them along. Git attributes are per-file rules that can tell git to change a file before storing it, for example to encrypt it.\n\n- Cloud session upload (the git bundle sent when moving work to a cloud session) is refused, with a detailed explanation and steps to fix it, when `core.attributesFile`, `attr.tree` or `core.ignoreCase` is set outside the repository, when `GIT_ATTR_SOURCE` is set in the environment, when a `GIT_CONFIG`-style environment config carries an include or those keys, or when `HOME` or a config path is relative.\n\n- Reading the repository's `info\/attributes` file now records the file's details and the directory state, and uploads that failed because files changed while they were being read are now recorded as such.\n\n- The private git directory copy under `~\/.claude\/seed-admin` now fails with reason \"placement\" when `GIT_ATTR_SOURCE` is set, when `GIT_CONFIG_COUNT` or `GIT_CONFIG_PARAMETERS` inject config keys touching attributes or ignorecase, or when `GIT_CONFIG_GLOBAL`, `GIT_CONFIG_SYSTEM`, `XDG_CONFIG_HOME`, `HOME` or similar are relative paths.\n\n- That copy also reads `core.excludesFile` and `core.attributesFile` and keeps only values that come from user or system config files. Values from the repository, a worktree or the command line are ignored, and a log line says so.\n\n- The directory-sync git check now also runs `git config -z --includes --show-scope --show-origin --type=path --get-all` for `core.excludesfile` and `core.attributesfile`, so it learns both each value and which file set it.\n\n**Why**\n\nWithout these checks, a file that git would normally encrypt or otherwise change before storing could be uploaded exactly as it sits on disk. If you use a global attributes file, an encryption filter or unusual git environment variables, expect these features to stop and explain what to fix rather than produce a copy that behaves differently.\n\n- Area: File Sync\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5"}