This article examines how social movements based in poor communities make electoral alliances with politicians in contemporary Indonesia. Drawing on case studies of the urban poor in two elections in Jakarta, we point to a pattern of adversarial linkages by which movements present candidates with demands – in this case about housing and livelihood security – which are then distilled in formal ‘political contracts’. Unlike institutionalised relationships between parties and social constituencies in many democracies, these linkages are ad hoc, pragmatic and characterised by mistrust. In Jakarta, they involved disaggregation rather than aggregation of interests, with movement actors in the second election in 2017 seeking concrete gains relating to land and livelihoods in particular neighbourhoods, rather than a broad programme of urban reform, as had been their goal in 2012. We suggest that such adversarial linkages are a feature of contemporary Indonesian politics. They allow marginal groups to make contingent political gains but are compatible with prevailing clientelistic patterns, which limit their potential to promote systemic change.