tee ! queue ! appsink max-buffers=1 or so would be one way of doing it.
You could also use an identity element’s "handoff" signal which is basically called for every buffer/frame that passes through, and usually you do nothing in there but if some kind of want_frame variable is set you send the frame to wherever it needs to go or something. You can achieve something similar with pad probes too. In either case you would have to wait for the next frame to pass through though and can’t just grab the current/latest one.
(Edit: of course you could also just keep around the last buffer yourself and store it somewhere)