Voici deux solutions.
**Solution 2** 1** (plus simple) ici on fait le changement directement sur les commandes de `geometry`. Le package fait son travail via `\AtBeginDocument`.
\documentclass{article}
\usepackage{xcolor}
\usepackage[showframe]{geometry}
\makeatletter
\let\mtGm@pageframes\Gm@pageframes
\renewcommand*\Gm@pageframes{\AtBeginShipoutAddToBoxForeground{\mtGm@pageframes}}%
\makeatother
\begin{document}
\hspace{-1cm}{\color{red}\rule{20cm}{1cm}}
\end{document}
**Solution 1** 2** Le package `geometry` fais appelle fait appel au package `atbegshi` et utilise `\AtBeginShipoutBox` le contenue `\AtBeginShipoutBox`. Le contenu de cette boite boîte est inséré en arrière plan arrière-plan par défaut, et pour ajouter de contenue contenu dans l'avant plan l'avant-plan le package dispose d'une commande `\AtBeginShipoutAddToBoxForeground`
`\AtBeginShipoutAddToBoxForeground`.
\documentclass{article}
\usepackage{xcolor}
%\usepackage[showframe]{geometry}
\usepackage{geometry}
\usepackage{atbegshi}
\makeatletter
\Gm@showframetrue
\AtBeginShipout{%
\setbox\AtBeginShipoutBox=\vbox{%
\baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@
\AtBeginShipoutAddToBoxForeground{\Gm@pageframes}\box\AtBeginShipoutBox}}
\makeatother
\begin{document}
\hspace{-1cm}{\color{red}\rule{20cm}{1cm}}
\end{document}