O shell, seja bash ou zsh, não tem acesso ao buffer de rolagem do terminal. Enquanto o ag estava em execução, a saída dele vai direto para o terminal e não pode ser interceptada pelo shell.
Dependendo do seu terminal, pode ser possível capturar o conteúdo do buffer de rolagem reversa. O rxvt-unicode pode ser induzido para descarregar para um arquivo temporário com a seqüência de escape '\ e [0i'. Para o tmux, você pode usar tmux -q capture-pane \; save-buffer -b 0 $TMPFILE \; delete-buffer -b 0
. E a tela pode fazer screen -X hardcopy $TMPFILE
. No entanto, todas essas soluções só funcionarão em uma sessão zsh local. Assim que você usar o ssh ou similar, os arquivos temporários não estarão no mesmo sistema que o zsh.
Esses arquivos temporários podem ser usados para um widget de conclusão personalizado. Eu tenho esse widget, mas é um pouco longo demais para colar aqui.