What does it mean to "warm-start" XGBoost?
Why not just keep training your old model?
just pass the previous xgb model (path + filename) as an argument in the train function.

bst = xgb.train(param0, dtrain, num_round, evals=[(dtrain, "training")], xgb_model=prev_xgb_model)

xgb_model=prev_xgb_model