憲宗成化四年夏四月、固原土達滿四叛、據石城.
初、洪武中、平陝西、故元平涼萬戶把丹率眾歸附、高帝授平涼衛千戶.其部落散處開城等縣、號土達.以畜牧、射獵為生、家多殷富.把丹孫滿四、以貲力雄諸族.成化初、孛來毛里孩內侵、土達李俊者、獨以羊酒奉孛來.孛來喜、賜以馬、俊遂有北徙意.致仕都督張泰牧鳴沙州、與土達鄰、張把腰等時時假寇盜劫掠之、泰以狀聞于巡撫陳介.會有通渭縣民避徭役、匿滿四所、陳介下吏捕治之.滿四素縱佚不知法、頗危懼.參將劉清初至、指揮馮傑歛諸土達賄利為餽.李俊素狡黠、遂以言激滿四等為亂.滿四姪滿璹為平涼指揮、有司移檄平涼衛、捕滿四、張把腰甚急.璹素戇、不知滿四等異謀、率眾往捕.滿四知之、俟璹至、佯許歸罪有司、紿遣其眾散、遂劫璹、號集諸土達、以四月叛、入石城.
石城在眾山中、去平涼千里.四面峭壁數十仞、無徑、非引繩不可登.西山頂平、可容數千人.山罅皆墻、高二三丈.城中有數石池可汲、池外設棧道、而棧道下則築小城護之.前有小山高數仞、如拱壁狀.山後悉築墻、高二丈五六尺.各留小門、僅容單騎.城外皆亂山、蓋昔人造之避亂者、不知所始.滿四等往獵射、故熟知其險可據.而先掘地、得前代行帥府印、心動、遂叛、入居之.其徒相率偽尊四為招賢王、李俊順理王、散劫甘州.旋攻固原千戶所、李俊戰死.劉清自靖鹵率眾馳戰、不利.都指揮邢瑞、申澄率各衛軍往捕、戰于城下.兵敗、申澄死之.賊勢大振、民失職者多從之、遠近震駭.
五月、敕陝西巡撫都御史陳介、總兵寧遠伯任壽、廣義伯吳琮、巡撫綏延都御史王銳、參將胡愷各率所部兵討之.秋七月、寧夏兵先至、介等不候綏延兵、自固原急趨蔡祥堡.夜二鼓、營壘始定、軍士勞疲.比曉、即出架梁順嶺而行.去石城十里許、賊數千出迎、請降.有卒馮信頗知兵、言于介等曰:「賊雖降、誠偽叵測.然我軍夜至、未休暇即行、且乏水飲、力疲矣、不可戰.姑聽彼請緩師、徐議攻討.」吳琮叱之曰:「賊計欵我兵至此、豈可退乎!」遂麾兵進.賊遁去、至城、遂驅牛羊數千在前、而精兵後繼.時賊尚無兵械、執木挺而鬬、官兵大敗.任壽、吳琮俱退保東山.陳介欲自殺、左右救免.遺失軍資甲械千數、兵有被圍在山者、(皆棄之而歸、)盡殲焉.賊乃益猖獗、凡係土達、盡逼入城.時截靜寧州道、掠奪甘肅糧運無算、且聲言欲窺陝西.事聞、逮陳介、任壽、吳琮、劉清、馮傑等下錦衣獄.命都御史項忠總督軍務、總兵劉玉、參將夏正率京營兵、並發陝西三邊兵五萬人往討之.起大理寺少卿馬文升為都御史、巡撫陝西協勦.
冬十月朔、項忠、馬文升先後至固原.明旦、于營外得賊所遺書、求宥罪、容居石城、免其徭役.眾知為緩兵計、置之.忠等議進兵方略、令善畫者圖其山谷形.分六路進兵:忠與文升等屯中路、由莽金佛溝進;延綏巡撫王銳、參將胡愷由李俊溝進;伏羌伯毛忠由木頭溝進;右參將夏正由亂麻川進;都指揮姜盛由墨城子進;副總兵林盛由好水川進;都指揮張英由驢母川進.期三日諸路少出兵嘗賊、且探地勢、後乃大舉.比至城外、賊來迎敵、延綏兵恃勇輕進失利.明日、復會戰.賊佯敗、歛眾入城.伏羌伯毛忠麾其兵、進據木溝.翼日、忠督精銳四千先登、奪山北三峯、又奪山西四峯、與各路官軍會、進攻石城、擒斬甚眾.忠為流矢所中、還至半山而卒、諸軍皆却.劉玉被圍城下、眾潰、玉中流矢.項忠斬退縮千戶一人以徇、眾懼、不敢退、玉得免.項忠以兵敗憂失色、文升曰:「勝負常事耳.況賊死亦多、勢已不振.此時黃河未凍、賊不能北徙、無深憂、可徐圖之.」
朝廷聞毛忠敗死、兵部尚書程信、撫寧侯朱永、定襄伯郭登等議、恐賊連北寇、奏遣朱永率京兵四萬往益師.朱永欲張大其事、請定賞格乃行.事下閣議、大學士彭時知賊可平、嫌其張皇.會項忠報軍中事至、時曰:「賊四出掠、信可慮.今入保山、我師圍之甚固.賊已困、行當就擒矣.京兵何庸再出?」大學士商輅亦曰:「觀項忠布置、賊不足慮也.」程信忿其言不行、出危言曰:「項忠軍若敗、必斬一二人、然後發兵去耳!」時廷臣羣然附和、謂:「不出師、必遂失關中.」多尤時輕敵.時曰:「觀項忠疏曲折、保無虞也.」詔問忠:「須益兵否?」忠上疏言:「京軍怯、不諳戰、益之無補.請命永率精兵五千沿邊西.得賊平報、止不來;未平、則西、戮力攻之.」信等以忠異己、各煽浮言.會有星孛于台斗、中外洶洶.占者以為木在秦州、不利西師.忠聞之、曰:「賊虐害生靈、惡貫滔天.今仗皇威問罪、師直而壯.兵法曰:『禁祥去疑.』昔李晟討朱泚、熒惑守歲、卒以成功.今類此.」乃不待援師至、即督兵攻圍.賊堅壁不出戰、文升與忠謀曰:「賊城中無水、芻粟亦漸乏.若絕其芻汲、則釜魚當自斃矣!」忠然之.令官軍掩捕.芻汲者多被擒、乃知城中無水.忠等日引兵至城下挑戰、至暮引還、以疲之.賊信胡神、神降曰:「若今日出戰、勝則利;不勝已矣.」是日、賊一出、敗歸、始大懼.會調甘州兵三千至、乃益兵攻城.兵已登山、山高險、卒不能克.會日暮、兵在山上者數千人、未能退、方懼.賊亦自危、詐請降.忠等遂許之、以退山上兵.賊邀忠、文升等詣城下與語、忠與劉玉皆單騎往.賊數百人擐甲馳繞門外以示武.文升在溝外、賊來邀、亦赴之.帥數十騎往叱賊、使歛兵.滿四等訴被劉參將、馮指揮激變故、乞宥死、請降.忠等言:「劉、馮二人、朝廷已械赴京、下獄矣.爾速降、朝廷必宥爾死.」又問滿璹曰:「爾被劫入城、非反者.」璹乞命、忠等遂納其降、撫璹歸營.而滿四狐疑、復走上山.明日、復設木柵請戰、不降.
十一月、諸將相持久.時天寒甚、士卒墮指.忠等言曰:「師老矣、恐生他變.即黃河凍、倘有外警、我師豈能久駐?倘賊乘間突出、與西戎合、患有不可言者、須急攻城破之.」眾不能決.文升議欲縛木為廂車、渡濠攻城.眾恐多傷人、不果.然賊見攻具甚懼、漸有出降者、忠等皆給票縱之歸.賊聞、出降者益眾.
有楊虎貍者、最驍悍、滿四所任倚.夜使虎貍出營遠汲、被擒.忠先揚言斬之、虎貍乞命.仍諭之順逆、許以不死、解所束金鈎賜遣之、令為內應.劉玉刮刀與誓、曰:「爾能生擒滿四、或殺之來、朝廷有賞格、必不爾負.」虎貍請自效、且曰:「賊兵精、當以計移其精騎于山上.誘四出東山口出戰、可擒也.」忠等厚撫慰遣之.明日、整兵至山下.東山口係延綏兵所守、忠等不欲泄、謂其將曰:「爾暫休、今日余代爾守.」乃令人登高覘之、見一人[乘]白馬出城、即滿四也.既而果有精兵駐山上、忠等始信虎貍約、乃伏兵東山口.滿四出、諸軍競前撲之、伏兵四起、滿四倉皇突陣墜馬、遂就擒.斬首七千餘級、俘獲二千餘.文升欲乘勝擣城、忠恐倉猝難拔、遂以滿四歸營.乃奏捷、止援兵.
明日、城中復立舊達官火敬為主.忠等乃遣偵夜探城下、賊北行即捕、南行勿追.蓋欲散其黨、使易成擒.劉玉欲撤兵退、令賊自解散.忠曰:「賊自叛逆以來、前後大小三百餘戰、殺我一伯、三指揮、官軍死者數千人.今若縱之逸去、他日必為陝患.」乃屯兵日覘之.賊度不能支、一夜潰走散去.因發兵分捕、復斬首數千級.滿四從子滿能者、最驍捷、逸去.詢其黨、知入青山洞.乃用火薰之出、亦就擒、並獲家屬百餘口.諸營搜山、又獲賊五百餘人、幼男婦女不下數千人、盡分給諸軍.惟宥楊虎貍家.文升謂忠曰:「石城之險、非盡毀前後所築墻垣、恐後有叛者、必據此為巢窟.」遂令萬人悉平之、立石紀平賊歲月于山.餘賊百餘人、走據彗箒山.會有報西戎入套、乃留精兵三千人伺勦餘賊、忠等還固原.時生擒千人、惟滿四、火敬等並各罪大者械送京師、餘八百人就軍中斬之.捷奏至、人始服彭時料敵明審、鎮靜得體云.初、忠日披堅于石城下、矢石如雨、略不退怯.文升勸其持重、忠曰:「奉命討賊、久無成功、死所甘心.」時論偉之.
五年正月、彗箒山賊首毛哈喇被獲、誅之.餘賊解散、忠等下令各歸農業不問.奏于石城北[古]西安州增設一千戶所、設兵防守之.忠等遂班師、論功陞賞有差.