Fix "Could not load plugin 'name' (no plugin found with that file name)" in Oxide
Oxide has no file in oxide/plugins whose base name matches the name you passed to oxide.load. Either the name differs from the .cs file (case matters on Linux) or the file is not a .cs file — a plugin saved with a .txt extension is ignored by the loader.
Could not load plugin 'killrewards' (no plugin found with that file name)
Why it happens
oxide.load and oxide.unload take the plugin file name, not the title from the [Info] attribute, and the lookup is a plain string match on the file's base name. On Windows and in the default case-insensitive filesystem setups, oxide.load KillRewards finds killrewards.cs, but on a Linux host running a case-sensitive ext4 volume it does not, and you get this message. The loader also only scans files ending in .cs; a plugin downloaded as KillRewards.cs.txt (browsers and editors often append an extension, and some panels hide known extensions) sits in the folder but is never seen, so loading by the name you see in the file list fails too. The same message appears when the file was removed, renamed, or never uploaded, and when you are pointed at the wrong directory — oxide/plugins on Oxide, carbon/plugins on Carbon. Note this is a name/file lookup error, not a compile error: nothing has been compiled at this point.
How to fix it
- List the plugin folder and compare names exactly:
ls oxide/plugins. On Carbon usels carbon/plugins. - Load using the file base name exactly as shown, without
.cs:oxide.load killrewardsif the file iskillrewards.cs. - If the suffix is not
.cs(for example.cs.txt), rename the file to<Name>.csand remove the extra extension. - If the class name inside the file does not match the file name, rename the file (or the class) so both are identical; Oxide reports this separately but fixing it now saves a second reload.
- Confirm with
oxide.plugins— the plugin should now appear. A successful first load printsLoaded plugin <Title> v<Version> by <Author>. Compile errors would printError while compiling <Name>:instead, which means the load call itself worked.
Before and after
# Plugin file was saved with a stray extension, so the loader never sees it:
# oxide/plugins/KillRewards.cs.txt
oxide.load KillRewards
# Wrong case on a Linux host (the file is killrewards.cs):
oxide.load KillRewards# Rename the file so it ends in exactly .cs:
# oxide/plugins/KillRewards.cs
# Then use the base name with the casing shown by the folder listing:
oxide.load KillRewards
# Verify it is registered and loaded:
oxide.pluginsFAQ
Does oxide.load use the plugin title or the file name?
The file name. The title in [Info("...")] is only used in console output and listings. If your file is killrewards.cs and the title is Kill Rewards, you still run oxide.load killrewards.
Why does it work on my test server but not on the live one?
The live server is probably on Linux with a case-sensitive filesystem, while your local machine is not. oxide.load KillRewards finds KillRewards.cs locally but not killrewards.cs on the host. Use the exact casing from the folder listing.
The file is there and named correctly but the message persists
Check which folder you are listing. Oxide reads oxide/plugins; Carbon reads carbon/plugins. A file dropped in oxide/plugins on a Carbon server is not loaded. Also confirm the extension is .cs and not .cs.txt.
Is this the same as 'Unable to find main plugin class'?
No. This message means no matching file was found. The main-class error means the file was found and compiled but no class deriving from RustPlugin with the right name exists inside it.
Different error?
Paste the full console output and get the cause and a fix in plain English.
Open the error explainerSkip the debugging
Generated plugins are compiled before you get them, and compiler errors are fixed automatically.
Generate a plugin2 free plugins a month, no card.
Last updated Oct 26, 2026.
Get plugins that compile first time
Generate