I think this translation for «Tu n'as pas une clope? Si.» is a bit confusing in the lesson.
In the English, the inversion reads as expecting that the person does have a smoke, thus the following "Yes, I do" isn't disagreement.
I think dropping the inversion and more closely following the original would better convey the French phrase, as in: "You haven't (got) a smoke? Yes, I do."