{"record":{"id":"0b10363d5d8fcaef","repo":"jdx/mise","slug":"dotfile-target-inline-content-does-not-support","errorCode":null,"errorMessage":"dotfile {target}: inline content does not support mode, exclude, or manifest","messagePattern":"dotfile (.+?): inline content does not support mode, exclude, or manifest","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/files.rs","lineNumber":594,"sourceCode":"                        );\n                    }\n                }\n            }\n            if resolve_target_arg(&target).is_relative() {\n                bail!(\"dotfile target must be absolute or start with ~/: {target}\");\n            }\n            if let FileTomlEntry::Table {\n                source,\n                content,\n                mode,\n                manifest,\n                exclude,\n                ..\n            } = entry\n            {\n                if content.is_some() && (mode.is_some() || exclude.is_some() || manifest.is_some())\n                {\n                    bail!(\n                        \"dotfile {target}: inline content does not support mode, exclude, or manifest\"\n                    );\n                }\n                let mode = match mode.as_deref() {\n                    Some(value) => FileMode::parse(value).ok_or_else(|| {\n                        eyre::eyre!(\"unknown dotfile mode {value:?} for {target}\")\n                    })?,\n                    None => default_mode(),\n                };\n                if mode == FileMode::Track\n                    && (source.is_some()\n                        || content.is_some()\n                        || manifest.is_some()\n                        || exclude.is_some())\n                {\n                    bail!(\n                        \"tracked file {target} cannot declare source, content, manifest, or exclude\"\n                    );","sourceCodeStart":576,"sourceCodeEnd":612,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/files.rs#L576-L612","documentation":"Inline `content` dotfiles are written directly with fixed defaults; the concepts of mode, exclude patterns, and manifests only make sense for sourced files (copy/symlink from the dotfiles root). If a table entry sets `content` together with any of `mode`, `exclude`, or `manifest`, validation fails because the combination is unsupported rather than partially honored.","triggerScenarios":"Declaring e.g. `[dotfiles.\"~/.x\"]` with `content = \"...\"` plus `mode = \"755\"`, `exclude = [...]`, or `manifest = \"...\"` in the same table.","commonSituations":"Converting an existing source-based entry to inline content but leaving `mode`/`exclude` behind, or copy-pasting a template entry and swapping `source` for `content` without cleaning up other keys.","solutions":["Remove `mode`, `exclude`, and `manifest` keys from the entry that uses `content`.","If you need a specific file mode or exclusions, switch back to `source` (a file in the dotfiles root) and keep those keys there.","Set the desired permissions directly on the source file if using symlink/copy mode."],"exampleFix":"// before\n[dotfiles.\"~/.netrc\"]\ncontent = \"machine ...\"\nmode = \"600\"\n\n// after\n[dotfiles.\"~/.netrc\"]\ncontent = \"machine ...\"","handlingStrategy":"validation","validationCode":"function assertInlineContentEntry(entry, target) {\n  if (entry.content != null && ['mode','exclude','manifest'].some(k => k in entry))\n    throw new Error(`${target}: inline content cannot combine with mode/exclude/manifest`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  applyDotfiles();\n} catch (e) {\n  if (/inline content does not support/.test(e.message)) {\n    console.error('Strip mode/exclude/manifest from the content-based entry or switch to source');\n  } else throw e;\n}","preventionTips":["Treat `content` entries as minimal: only `content` (plus encrypt/autosave/enabled)","When converting source entries to content, delete leftover provisioning keys","Keep a lint rule that flags content + mode/exclude/manifest combinations"],"tags":["dotfiles","config-validation","conflicting-options","mise"],"backgroundTag":"conflicting-config-options","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}