diff --git a/etc/cli_filter.lua.example b/etc/cli_filter.lua.example
new file mode 100644
index 0000000000000000000000000000000000000000..b07ac07ef5c8f0c65e65ae10727582549d054f69
--- /dev/null
+++ b/etc/cli_filter.lua.example
@@ -0,0 +1,96 @@
+--[[
+--This is an example of cli_filter.lua script for Slurm
+--More information about Slurm cli_filter:
+-- https://slurm.schedmd.com/cli_filter_plugins.html
+--To find names of options, take a look at:
+-- src/common/slurm_opt.c
+--]]
+
+function _find_in_str(str, arg)
+        if str ~= nil then
+                local place = string.find(str,arg)
+		if place == 1
+		then
+			return true
+		else
+			return false
+		end
+        else
+                return false
+        end
+end
+
+function slurm_cli_pre_submit(options, pack_offset)
+
+	--[[
+	-- Checks done in cli_filter can be worked around by users switching to different
+	-- SLURM_CONF or using their own build of tools where call to cli_filter was removed.
+	--
+	-- If strict policy enforcement is a requirement than job_submit plugin should be used.
+	--]]
+
+	if options["type"] == "srun"
+	then
+		if options["uid"] == "0" --[[or options["uid"] == SpecialUser]]--
+		then
+			slurm.log_info("srun allowed for uid: %s", options["uid"])
+		else
+			if options["pty"] == "set"
+			then
+				slurm.log_error("Use of srun with --pty is forbidden for uid: %s", options["uid"])
+				return slurm.ERROR
+			end
+		end
+	end
+
+	if options["type"] == "sbatch" and options["wrap"] ~= nil
+	then
+		slurm.log_error("--wrap option is forbidden");
+		return slurm.ERROR
+	end
+
+	local script_location = {}
+	script_location[1] = "/opt/supported_scripts"
+	script_location[2] = "/opt/supported_scripts2"
+
+	local allowed = false
+	for idx,location in ipairs(script_location)
+	do
+		if _find_in_str(options.argv[1], location)
+		then
+			allowed = true
+			break
+		end
+
+	end
+
+	if allowed == false
+	then
+		slurm.log_error("You have to use scripts from one of:")
+		for idx, location in ipairs(script_location)
+		do
+			slurm.log_error("- %s", location)
+		end
+		return slurm.ERROR
+	end
+
+	return slurm.SUCCESS
+
+end
+
+function slurm_cli_setup_defaults(options, early_pass)
+
+	--[[
+	-- Make --hint=nomultithread a default behavior
+	-- if user specifies other --hint=XX option then
+	-- it will override the setting done here
+	--]]--
+	options['hint'] = 'nomultithread'
+
+        return slurm.SUCCESS
+end
+
+function slurm_cli_post_submit(offset, job_id, step_id)
+	slurm.log_info("Submitted: %d.%d component: %d", job_id, step_id, offset);
+        return slurm.SUCCESS
+end
diff --git a/slurm.spec b/slurm.spec
index b1a5c9ebbb1de3dedf255c9f8d3b456045780894..25c5184c8f388ac7b1970bd9322f2a603c6f9938 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -412,6 +412,7 @@ install -D -m644 etc/slurmrestd.service  %{buildroot}/%{_unitdir}/slurmrestd.ser
 install -D -m644 etc/cgroup.conf.example %{buildroot}/%{_sysconfdir}/cgroup.conf.example
 install -D -m644 etc/slurm.conf.example %{buildroot}/%{_sysconfdir}/slurm.conf.example
 install -D -m600 etc/slurmdbd.conf.example %{buildroot}/%{_sysconfdir}/slurmdbd.conf.example
+install -D -m644 etc/cli_filter.lua.example %{buildroot}/%{_sysconfdir}/cli_filter.lua.example
 install -D -m755 contribs/sjstat %{buildroot}/%{_bindir}/sjstat
 
 # Delete unpackaged files:
@@ -540,6 +541,7 @@ rm -rf %{buildroot}
 %config %{_sysconfdir}/cgroup.conf.example
 %config %{_sysconfdir}/slurm.conf.example
 %config %{_sysconfdir}/slurmdbd.conf.example
+%config %{_sysconfdir}/cli_filter.lua.example
 #############################################################################
 
 %files devel