You need to use BindToRenderStep to set the CFrame exactly after the camera updates:
local RunService = game:GetService("RunService")
BIND_NAME = "After cam update for sitting players"
local function afterCamera(delta)
-- Put your code to overwrite the camera's update
end
-- To start your code (like making a connection)
RunService:BindToRenderStep(BIND_NAME, Enum.RenderPriority.Camera.Value + 1, afterCamera)
-- To end it (like disconnecting a connection)
RunService:UnbindFromRenderStep(BIND_NAME)