Joshua isn't a liar. The issue is the biblical narrative presents a complex fulfillment: Joshua declared God fulfilled His promise by giving Israel all the land
Joshua 21:43-45, meaning it was legally theirs and they had rest. However, they didn't fully remove all inhabitants due to their own incomplete obedience and military shortcomings. Therefore leaving some Canaanites in the land, with the understanding that full, continuous possession depended on their ongoing faithfulness. It was all their land, through their disobedience they failed to claim it. Joshua records the tribes, particularly Manasseh,
Joshua 17:12-13 and Ephraim,
Judges 1:27-28, couldn't fully remove the Canaanites, who remained in their cities, leading to forced labor and covenant compromise. This is the situation Joshua warned them about, emphasizing the need for full conquest and obedience to God's commands to avoid idolatry and sin.