{"record":{"id":"aa38b60408d14c1f","repo":"hashicorp/vagrant","slug":"no-synced-folder-implementation-is-available-for-y","errorCode":null,"errorMessage":"No synced folder implementation is available for your synced folders!\nPlease consult the documentation to learn why this may be the case.\nYou may force a synced folder implementation by specifying a \"type:\"\noption for the synced folders. Available synced folder implementations\nare listed below.\n\n%{types}","messagePattern":"No synced folder implementation is available for your synced folders!\nPlease consult the documentation to learn why this may be the case\\.\nYou may force a synced folder implementation by specifying a \"type:\"\noption for the synced folders\\. Available synced folder implementations\nare listed below\\.\n\n%(.+?)","errorType":"exception","errorClass":"Vagrant::Errors::NoDefaultSyncedFolderImpl","httpStatus":null,"severity":"error","filePath":"lib/vagrant/action/builtin/mixin_synced_folders.rb","lineNumber":173,"sourceCode":"            data = data.dup\n            if root\n              # If these are the root synced folders (attached directly)\n              # to the Vagrantfile, then we mark it as such.\n              data[:__vagrantfile] = true\n            end\n\n            # Keep track of this shared folder by the implementation.\n            folders[impl] ||= {}\n            folders[impl][id] = data\n          end\n\n          # If we have folders with the \"default\" key, then determine the\n          # most appropriate implementation for this.\n          if folders.key?(\"\") && !folders[\"\"].empty?\n            default_impl = default_synced_folder_type(machine, plugins)\n            if !default_impl\n              types = plugins.to_hash.keys.map { |t| t.to_s }.sort.join(\", \")\n              raise Errors::NoDefaultSyncedFolderImpl, types: types\n            end\n\n            folders[default_impl] ||= {}\n            folders[default_impl].merge!(folders[\"\"])\n            folders.delete(\"\")\n          end\n\n          # Apply the scoped hash overrides to get the options\n          folders.dup.each do |impl_name, fs|\n            impl = plugins[impl_name].first.new._initialize(machine, impl_name)\n            new_fs = {}\n            fs.each do |id, data|\n              data[:plugin] = impl\n              id         = data[:id] if data[:id]\n              new_fs[id] = scoped_hash_override(data, impl_name)\n            end\n\n            folders[impl_name] = new_fs","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/lib/vagrant/action/builtin/mixin_synced_folders.rb#L155-L191","documentation":"For synced folders without an explicit `type:`, Vagrant calls default_synced_folder_type to pick the highest-priority implementation whose usable? passes. If no installed implementation is usable on this host/guest pair, NoDefaultSyncedFolderImpl is raised, listing the implementations Vagrant knows about — meaning the problem is not which type to choose, but that none of them can run.","triggerScenarios":"Folder declarations without `type:` while every registered implementation is unusable: VirtualBox shared folders broken (guest additions mismatch) plus no rsync/nfs available, exotic guests (FreeBSD) with no usable default impl (lib/vagrant/action/builtin/mixin_synced_folders.rb:163-176).","commonSituations":"Broken/missing VirtualBox guest additions after a kernel update (vboxsf unusable) with rsync also absent; minimal boxes without any shared-folder guest tool; plugin (vagrant-vbguest) failing to rebuild additions; running several providers where the high-priority impl belongs to another provider.","solutions":["Repair the natural default: install/rebuild VirtualBox guest additions (often via `vagrant plugin install vagrant-vbguest` and a `vagrant reload`).","Or make a fallback usable and pin it: install rsync on host and guest, then set `type: \"rsync\"` on the synced folder.","If you do not need the folder, `config.vm.synced_folder \".\", \"/vagrant\", disabled: true`.","Check the listed implementations against `vagrant plugin list` to confirm which are actually installed."],"exampleFix":"# before\nconfig.vm.synced_folder \".\", \"/vagrant\"   # no type, no impl usable\n\n# after\nconfig.vm.synced_folder \".\", \"/vagrant\", type: \"rsync\"\n# plus once, to repair the VirtualBox default:\n#   vagrant plugin install vagrant-vbguest && vagrant reload","handlingStrategy":"fallback","validationCode":"# Confirm at least one synced-folder impl can run before relying on the default\ncommand -v rsync >/dev/null && echo \"rsync fallback available\" || echo \"no fallback: install rsync or fix guest additions\"\nvagrant plugin list | grep -q vagrant-vbguest || echo \"consider vagrant-vbguest to keep additions usable\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Install vagrant-vbguest (or rebuild guest additions after kernel updates) so the VirtualBox default stays usable.","Keep rsync installed on host and guest as a universal fallback and pin `type: \"rsync\"` when defaults are fragile.","For exotic guests, set an explicit folder type instead of depending on automatic selection."],"tags":["vagrant","synced-folders","virtualbox","rsync","guest-additions"],"backgroundTag":"no-available-implementation","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}