The package, estimated to cost €54bn (£48bn; $60bn) by 2023, was settled as climate change protesters took to the streets in 500 German towns and cities.
Key to the deal is a price for CO2 emissions in transport and buildings.
Taxes on long-distance rail are set to fall but on air travel they will rise.
"We are not living sustainably today", Chancellor Angela Merkel told reporters as hundreds of thousands of protesters demanded immediate action.
The Fridays for Future movement immediately rejected the package announced by Europe's biggest economy as inadequate.
The movement adopted the part-English hashtag "Not my Klima paket" (not my climate package), and claimed that 1.4 million protesters had taken to the streets across Germany.
In the capital, Berlin, it said 270,000 people had turned out, with a further 70,000 in Hamburg and Cologne. Police figures were slightly lower.
More about: Germany