How do I force a player to hold onto a tool?

What I mean is make it so that once they join/spawn in, they’re forced to hold it. They can’t unequip it, etc.

Typically, I would parent the tool to their character than disable their backpack, but you could also make it so that when the Tool.Unequipped event happens you just reparent it to the character. Example:

local Tool = YourTool
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(plr)
	local character = plr.Character or plr.CharacterAdded:Wait()
	task.wait()
	local newTool = Tool:Clone()
	newTool.Parent = plr.Character
	newTool.Unequipped:Connect(function()
		task.wait()
		newTool.Parent  = plr.Character
	end)
	
	plr.CharacterAdded:Connect(function(ch)
		task.wait()
		local newTool = Tool:Clone()
		newTool.Parent = ch
		newTool.Unequipped:Connect(function()
			task.wait()
			newTool.Parent  = ch
		end)
	end)
end)

Now this is not ideal for numerous reasons, first of all there has to be a small delay between unequipping and re-equipping, which is why I suggest the CoreGui method:

game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)