How semi-permanent hair dye stays in place?
According to this: http://questions.sci-toys.com/node/72, hair dyes work by creating pockets within the hair. The colored dye molecules then get stuck in these pockets - requiring multiple washes to escape. Short term hair dyes use larger dye molecules so that they cannot get stuck in the hair. On the other hand, longer term dyes actually react with you hair to stay in there for an extended duration of time. For the most part, all of these hair-dye interactions are the result of intermolecular forces.

Semi permanent hair dyes tend to be small compounds that get stuck in your hair. This means that they are not permanently bound to your hair, but they will require a lot of washes to escape. I hope this helps!