You probably want to attach the trail to the current character, not the characters that the player will have in future. So instead of making a CharacterAdded connection, just get the current character by writing player.Character. It’s also more efficient to set parent after setting other properties.
local AttachTrail = game.ReplicatedStorage:WaitForChild("AttachTrailEvent")
AttachTrail.OnServerEvent:Connect(function(player)
local char = player.Character
local trail = game.ReplicatedStorage.Peach:Clone()
local attachment0 = Instance.new("Attachment")
attachment0.Name = "TrailAttachment0"
attachment0.Parent = char.Head
local attachment1 = Instance.new("Attachment")
attachment1.Name = "TrailAttachment1"
attachment1.Parent = char.HumanoidRootPart
trail.Attachment0 = attachment0
trail.Attachment1 = attachment1
trail.Parent = char.Head
end)