If you want to start at the first color each time, then you don't need to do anything to your vector of colors. The plotting function will automatically grab only as many items as it needs from that vector.
To verify this behavior, try running this code:
library(tidyverse)
df1 <- data.frame(cats = LETTERS[1:3], vals = rpois(3, 10))
df2 <- data.frame(cats = LETTERS[1:5], vals = rpois(5, 10))
my_colors <- c("red", "orange", "yellow", "green", "blue")
df1 %>%
ggplot(aes(x = cats, y = vals, fill = cats)) +
geom_col() +
scale_fill_manual(values = my_colors)
df2 %>%
ggplot(aes(x = cats, y = vals, fill = cats)) +
geom_col() +
scale_fill_manual(values = my_colors)
Note, though, that if the number of items in cats exceeds the length of the vector of colors, you will get an error message. So just be sure you have at least as many colors as your maximum number of categories.