One potential option is to adjust the x axis scale 'expansion' to 0, filling that whitespace, and effectively making the x axis border start at zero:
Minimal, reproducible example:
library(tidyverse)
data("ChickWeight")
# example
ChickWeight %>%
mutate(Chick = factor(Chick, levels = 50:1)) %>%
filter(Chick %in% 1:20) %>%
ggplot(aes(x = weight, y = Chick)) +
geom_col(position = "identity") +
theme_minimal(base_size = 16) +
theme(panel.grid = element_blank(),
axis.line.x.bottom = element_line(colour = "black"))

Potential solution:
ChickWeight %>%
mutate(Chick = factor(Chick, levels = 50:1)) %>%
filter(Chick %in% 1:20) %>%
ggplot(aes(x = weight, y = Chick)) +
geom_col(position = "identity") +
theme_minimal(base_size = 16) +
theme(panel.grid = element_blank(),
axis.line.x.bottom = element_line(colour = "black")) +
scale_x_continuous(expand = expansion(mult = c(0, 0.25)))

Created on 2023-04-28 with reprex v2.0.2
Or, if you wanted to keep that whitespace for some reason, you could also draw a line on your plot using geom_segment()
, e.g.
library(tidyverse)
data("ChickWeight")
ChickWeight %>%
mutate(Chick = factor(Chick, levels = 50:1)) %>%
filter(Chick %in% 1:20) %>%
ggplot(aes(x = weight, y = Chick)) +
geom_col(position = "identity") +
geom_segment(aes(x = 0, xend = max(ChickWeight$weight),
y = 0.425, yend = 0.425), inherit.aes = FALSE) +
theme_minimal(base_size = 16) +
theme(panel.grid = element_blank())

Created on 2023-04-28 with reprex v2.0.2
Do either of these approaches solve your problem?